1、基础阶段
   
话说06年第一份工作从事的是PLC开发,用protel画原理图和PCB,写AVR单片机程序,焊焊板子,还去过华强北买器件,比较杂,但是接触面比较广,为进一步学ARM打下了基础。

期间不甘心只停留在AVR单片机层次,买了邵贝贝的《uCOS-II嵌入式操作系统》,看了4-5遍,弄懂它的原理,还看了陈明计的《SmallRTOS嵌入式操作系统》,之后自己写了一个AVR的时间片调度器。

2、接触ARM
   
08年4月份换了工作,搞B超,接触三星的S3C2410,看2410的数据手册,开始接触到ARM的32个寄存器、中断管理、MMU、7种工作模式,还真的晕了好长一段时间,模模糊糊,弄不懂,挺痛苦的。工作中也开始实践起来,基于ADS1.2,采用uCOS-II。

先不管ARM内核的细节、产品平台底层的细节,也先不管USB、LCD、内存控制器等较复杂的部分。先搞单片机有的那些外设,发现单单写2410的驱动程序,如SPI、USART、IO控制,发现跟单片机一样,只要看2410数据手册的SPI、USART、IO口部分就行了。这时,信心有了,感觉自己多少可以把2410玩起来了。

这时买了一块2410开发板,带有ADS1.2例程,这些例程有启动汇编代码,还有底层的一些C语言初始化代码,看的很费劲,不知道是啥意思。没关系,你总会找到main函数入口吧?其他我不管,先自己在main函数里面编编代码玩玩先,试了URAT、SPI、I2C、RTC,跑起来了。这时再学学中断,按照例程的中断,自己也编写一下自己的中断例子。

发现经过例程学习ARM,效果比单看书好的多。单看书你会晕,很多不明白,越看越枯燥,越看越没信心,感觉看了很久,心里还不知道ARM是什么。学学例程的话,把ARM当单片机用,很简单,上手很快,你对ARM的恐惧感就慢慢消失了,信心也有了,再结合书本,对照例子,心中一些不明白的ARM内核原理,也逐渐开朗,哦,原来如此,原理很简单嘛。

再后来,看ARM原理、MMU、中断管理、SDRAM、LCD控制器,自然而然的都明白了。

3、提高
    
基础有了,慢慢的接触到USB、FAT文件系统、U-BOOT、GUI显示,一个一个的去熟悉,发现你已经入了嵌入式的大门,慢慢的积累,每搞定一个功能,也小有成就感了。

4、后记
     
09年五一又换了一份工作,用atmel的9260芯片,搭建软件平台,这时对以往知识的一次综合应用,以前都是现成的平台,自己在上面添加功能,修修改改,这一次,是从无到有的建立ARM+uCOS-II软件平台:

编译器选型,选了MDK,上网找破解;
     
了解9260的启动过程,程序烧写方案;
     
选择调试工具,建立调试环境,使用JLINK、或者wiggler+HJTAG;
     
uCOS-II移植,下载了官方IAR移植版的,根据MDK做修改,终于跑起来;
     
编写9260各种外设驱动;
     
应用软件系统结构设计,多任务划分;应用编程,问题解决,这一块花的时间最多了。
     
学习zmodem,把官方的zmodem程序看懂,移植到产品上,做了一个不超过4K的9260引导程序,代替atmel的at91bootstrap,可以通过“超级终端+串口”烧录程序,而用SAM-BA烧写,很麻烦;

深入分析了yaffs文件系统,做了一个日志系统,计划今年将yaffs分析经验写成一个文档;
     
今年的计划:预测物联网趋势,网络将会大规模应用,要深入学习tcpip,学精,分析lwip代码

5、希望能给后来者参考价值
PCB打样找华强 http://www.hqpcb.com/3 样板2天出货

最新文章

  1. Android之startService()和bindService()区别
  2. wampserver的安装以及使用
  3. 用JAVA写简单的栈
  4. [Jetty] jetty 内存调优
  5. webSocket vnc rfb
  6. max_size, capacity and size 的区别
  7. Scala基础之注解(annotation
  8. 城乡联谊胡策会糊厕R3
  9. php数组根据某一个键值,把相同键值的合并生成一个新的二维数组
  10. 201621123050 《Java程序设计》第13周学习总结
  11. Oracle中建库时报Exception in thread main
  12. LeetCode之“树”:Balanced Binary Tree
  13. C# - Visual Studio简明操作
  14. thinkphp自动验证分析
  15. Linux 查询oracle错误日志&警告日志
  16. [Noi2002]Savage(欧几里得拓展)
  17. Redis Cluster日常操作命令梳理
  18. word2vec前世今生
  19. 【Unix网络编程】chapter1简介
  20. 每日踩坑 2018-06-19 AutoMapper简单性能测试

热门文章

  1. 在Ubuntu 14.04 TLS下openvas V8.0源代码安装过程
  2. Skynet服务器框架(八) 任务和消息调度机制
  3. 可视化CNN神经网路第一层参数
  4. pg_buffercache
  5. 4.CRT远程连接的使用
  6. mono developer 无法启动 可以试试如下插件包.
  7. 我所常用的git命令
  8. matlab_移动文件和复制文件
  9. 洛谷 2831 (NOIp2016) 愤怒的小鸟——仅+1所以bfs优化
  10. HDU 3018 Ant Trip(欧拉回路,要几笔)