主题 : 新手学习ARM两个月的过程及一点体会 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 85667
精华: 1
发帖: 37
金钱: 235 两
威望: 47 点
贡献值: 1 点
综合积分: 94 分
注册时间: 2013-01-08
最后登录: 2018-05-07
楼主  发表于: 2013-02-18 17:49

 新手学习ARM两个月的过程及一点体会

99年的时候学过C语言(完全自学,之前没有一点计算机基础),通过了计算机二级考试,并且成绩优异。

(有点显摆哈!

09年开始玩起了航模,去年这个时候想玩玩航模自动控制,就买了51单片机开发板,开始接触单片机,学习的过程也是断断续续,当我把开发板自带的例程学完的时候,想自己做个整板程序的时候,才发现51的局限,速度慢、中断少、支持外设少、不支持PWM、片内ROM小。用中断做的延时,随着程序的增大,其它中断的使用,运行起来就不准确(也许是我的程序还有问题)。12年底的时候就想用个更高级一点的单片机,BAIDU上查了好多天,知道了AVR、ARM等嵌入式单片机,之前买的太低端,这次可不能太低了,要学就学高端一点的,淘宝上看中了TINY210V2,配置高,价格相对较低,想着先买回来玩玩再说,学不会了就当个平板用。到货的当天就连夜把友善编译好的几个操作系统内核按说明体验了一遍。

接下来好几天都是鏖战到半夜两三点,从最基础的裸机程序开始,边看说明书、边试验。其中有好多东西都看不懂,只是照着说明书来,对于我这个什么事情都想搞明白的人来说,真是有点痛苦,越到后面就越迷惑,ARM不象51的IO操作那么简单、直接。跑了几天的裸机程序只得出了一个结论:我买的这个板子是没有问题的......

对于刚接触ARM来说,友善的说明书内容还是不够丰富,一些基础性的东西没有讲明白,不适合初学者。然后就放下板子,去网上找视频ARM的、STM32的,逐渐也多少明白了一些东西。

看到视频里调试程序、加载LINUX内核都在用Uboot,特别是有个远程遥控监控小车的视频让我非常兴奋,终于找到我学单片机的初衷了,视频里用TPLINK 3GWIFIMINI路由器刷上OPENWRT+Arduino来实现的,手就痒了(之前一直在看视频,没有动过TINY210V2),在友善论坛里下了UbootV4、OPENWRT for Tiny210的源码,但是按照教程步骤Uboot编译好了烧到SD,但是引导不起来,串口没有输出,板载喇叭叫个不停。。。。。Openwrt连第一步都执行不下去。。。。为此我的虚拟机上安装了RHEL5、Froad9还有ubuntu10,郁闷的要死。

正当我灰心的时候,突然有一次烧到SD卡上的UbootV4在串口有输出了(虽然它不停的在重启),看到"NAND bus width 8 instead 16 bit“的提示,就学着查找了这段文字的出处(还好就一个文件有这段话),就大概看了下附近了一段代码,折腾了半天,反正最后终于在我的串口看到了久违的“[FriendlyLEG-TINY210]#”,这让我信心大增,接下来的几天开始学着分析Uboot源码,虽然大部分代码还是看不懂,但多少明白了一点点,也让我看到了我之前改的那个地方是多么可笑。

这里我要非常感谢那些发教程的牛人们(liukun321、kasim等。)

昨天本来想按照liukun321的步骤用linaro的源代码从头开始走,下载解压后,到board目录下一看,看到有个tiny210目录,试着直接编译并烧到SD卡上,没想到直接就运行起来了,还在论坛里发了个贴子,今天看到kasim的回复,去他给的链接地址仔细看了看(以前就只是去下载个Uboot分支,因为E文完全看不懂,所以也没仔细看),让我发现了新大陆,原来大家都在努力修复我们的BUG,也让我看到了一个更大的学习平台。

这是我两个月以来学习ARM的过程,从刚开始的什么都不懂到目前试着修改源代码,自我感觉进步很大。

这里我也把我这两个月学习ARM的一点体会拿出来和大家分享分享。

首先要明白知识是一点一点积累起来的,过程也是漫长的。刚接触ARM的时候,太多的名词、太多的命令,太多的代码,请不要着急,找到一个要解决的问题,或者给自己找点难度来做做(比如教程用的是linaro的2011.10 Uboot分支,那么你看你能不能用2012.11 的Uboot能不能完成,完全按照教程上的东西来,只能让你体验一下过程,不能让你从中真真学到东西),做的过程中遇到不明白的地方可以Baidu,可以先不管,也可以照猫画虎,一点一点慢慢深入,先建立对ARM的大概认识。

其次要多实践。修改--》编译--》烧写——》运行——》看效果——》再修改——》再编译烧写运行,这个过程中多想想为什么。试着把几个人的方案,拿到自己的平台上来测试。比如Liukun的Uboot只支持Tiny210,是因为NAND上的区别,一个是SLC,一个是MLC,那可以找一个支持2GMLC的OK6440教程来综合一下,如果你能成功,那它就是你的了。

再次要建立信心,不要怕,要能静下心来,仔细分析,慢慢来。看着几千个文件,几千行代码,E文还不懂,如果不能静心,一定很头大,也会让你很浮躁,也会让你云里雾里,越来越没有信心。分析代码的这几天,我感觉只要你能静下心来,一条一条看代码,不懂就Baidu,程序你是能看懂个大概的,虽然慢一点,但是进步还是蛮大的,也会逐渐增加你的信心。人家能运行的代码,你拿来就不行的时候,不要灰心,要试着自己分析原因,可能那只是一个很小的问题,等自己亲手解决这个问题的时候,你会觉得很有成就感,虽然你花了很长时间,但你能学到东西,这样才能一点一点积累到很多东西。

最后要多看牛人的经验贴和教程,把对你有用的文章或教程收藏起来,没事多翻翻,你会有不一样的体会和认识。Liukun321的过程我都翻了几十次了,每次都能学到点东西。

对准备加入ARM的一点建议:

1、不要去买太高端的板子,学习资料比较少,学习起来难度比较大。
2、如果你想玩玩底层的东西,最好多看看基础的一些教程,比如硬件原理、程序流程什么的。
3、C语言要扎实,汇编也要多少懂点。
4、买板子之前一定要知道你要实现什么,看中的东西要先找找相关的视频来看,看这个板子能不能满足你的需求,不要冲动。(我就冲动了,按照我的需求,其实我应该买最小系统板,或者那种引出引脚的板子,或者Arduino。)
5、遇到问题多Baidu,换不同的关键词,我想你会找到有用的东西的。

我是ARM新手,有不对的地方,请各位牛人一笑而过。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2013-02-18 20:09
谢谢你的经验分享。事实上,这些比结果有价值多了。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 风云使者
UID: 36096
精华: 3
发帖: 2513
金钱: 14075 两
威望: 2815 点
贡献值: 3 点
综合积分: 5086 分
注册时间: 2011-01-11
最后登录: 2015-11-15
2楼  发表于: 2013-02-19 15:35
看来还是得好好学C,上高中真得学,不然没法折腾bootloader和内核了
极度缺钱,求捐赠……支付宝兼邮箱:huming2207@qq.com
级别: 侠客
UID: 73137
精华: 0
发帖: 85
金钱: 435 两
威望: 87 点
贡献值: 0 点
综合积分: 170 分
注册时间: 2012-07-04
最后登录: 2018-06-19
3楼  发表于: 2013-05-22 17:48
学习啦!!!很棒!
就这么乔
级别: 新手上路
UID: 93089
精华: 0
发帖: 17
金钱: 85 两
威望: 17 点
贡献值: 0 点
综合积分: 34 分
注册时间: 2013-06-14
最后登录: 2017-06-12
4楼  发表于: 2013-06-15 23:40

 回 楼主(小蚱蜢) 的帖子

我也纠结板子问题,是买210还是买ARM11呢楼主
级别: 新手上路
UID: 119182
精华: 0
发帖: 18
金钱: 95 两
威望: 19 点
贡献值: 0 点
综合积分: 36 分
注册时间: 2015-09-21
最后登录: 2016-03-30
5楼  发表于: 2015-09-29 21:31
楼主说的很好,很有启发,我同样也是初学者,请教一个问题怎么在win7下安装ADS1.2百度的资料行不通!