嵌入式学习历程

来源:互联网 发布:js与ajax 编辑:程序博客网 时间:2024/05/22 13:20

1.2011年8月1日--------拿到ARM开发板.

            a.屏幕不亮

           taobao店主让我重插一下。果然好使。

b.换铜柱

          原来的塑料柱真的很难拔下来,换了铜柱就好多了。

2.2011年8月2日--------烧测试程序

             a.环境

                  TQ2440, Window7.

             b.JLink

                 JLink用于烧U-boot。 如果原来的Boot被损坏了, SecureCRT&DNW是搞不定的!记住!

                 连接: JTag插口接到JLink; JLink通过USB线连电脑。

             c.SecureCRT & DNW

             d.问题和经验

                如果DNW无法运行,可删除c:\dnw.ini。

                如果先点DNW的Transmit, 可能无法完成烧写。 而且如果在未退出SecureCRT & DNW前,拔掉USB线,可能会蓝屏,Windows重启。

3.2011年8月6日--------看<Linux0.11内核解释>

看到 49页第三章Boot:"当 PC 的电源打开后,80x86 结构的 CPU 将自动进入实模式,并从地址 0xFFFF0 开始自动执行程序代码,这个地址通常是 ROM-BIOS 中的 地址。"  

不懂!

1.刚上电内存是空的,如何执行?
2.如何有内容,是谁是什么时候Copy到内存上的?


在网上找到一些资料:
1.映射/编址说: 0xF0000~0xFFFFF被映射到Bios ROM
2.南北桥说:取指时由CPU->北桥->南桥->Bios ROM
3.Bios自解压加载到RAM 

贴子


 

4.2011年8月7日--------烧Linux和WinCE

             <TQ2440开发板使用手册V2.5_20100611.pdf>步骤把Linux和WinCE烧了一遍,都可运行。有小小成就感! 注意资料上把如何处理坏块的步骤也放在一起,很容易就搞错,所以先别在那些步骤。建议EmbedSkey把“如何处理坏块的步骤”的内容放到正常步骤之后,或附录中。

 

5.2011年8月9日--------调试

             今天用JLink连接,可用AXD调试TQ2440_Test.bin了,爽!一步一步走还是可以看到成绩的。积跬步,可至千里矣。但很多Debug命令不会用,还需要不断学习。

 

6.2011年8月12日------学习ARM汇编

             看了很多工程都有Init.s,对于AREA, EQU等还是有点陌生,还是从汇编学起吧。http://www.peter-cockerell.net/aalp/html/frames.html

 

7.2011年8月14日-----学习uC/OS

            看汇编有点头晕,指令太多。如果不实践,真的记不住。况且看的资料是与BASIC相嵌(上面那个),因为没用过BASIC,还是有些功能不理解,比如%P。

            在网上逛了逛,发现uC/OS不错。因为它开源,可以编译后在ARM上运行,另外主要是它展示了操作系统的基本功能,所以学习它可以一举多得。

 

8.2011年8月19日-----调试简单的程序

           这几天把ucos看了前半部分,后而开始讲移植了,所以也想把天嵌附带的ucos运行,调试一下。但是,一调试AXD就弹出"Software interrupt (SWI) 0xFFFFFF occured in ARM mode @ address 0x2F5C0000 ",在网上找到了解决办法:在AXD的Options--Configure target--Configure--CPU中,将Delay after reset 由默认0改为1000。

不过,很多汇编不懂,比如中括号[ ]

[ {FALSE}
  ;rGPFDAT = (rGPFDAT & ~(0xf<<4)) | ((~data & 0xf)<<4); A M H
  ; Led_Display  
  ldr r0,=GPBCON     
  ldr r1,=0x155500  
  str r1,[r0] 
  ldr r0,=GPBDAT 
  ldr r1,=0x0   
  str r1,[r0]    

 ]
抓紧学习哟!

 

查到了. “[”相当于IF; “]”相当于ENDIF; “|”相当于ELSE。 今天,看到“^”不知道什么意思! (^   _ISR_STARTADDRESS       ; _ISR_STARTADDRESS=0x33FF_FF00)

 

找到,待确认:

MAP 指令将存储映射的原点设置为指定的地址。 存储映射位置计数器 {VAR} 也设置为同一地址。 ^MAP 的同义词。


 

 9. 2011年8月21日----调试uC/OS

今天调试天嵌开发资料带的uC/OS-II,把LCD_TYPE 定义成W43 就不容易死机了。

今天还看时钟,一并看了一下异常和中断,以及异常向量和中断向量,基本理解了。明天另写一文阐述自己的理解。

 

10.2011年8月23----软中断(SWI)

什么是软件中断?它有什么用处?   为了切换模式? 比如从用户(user)模式到管理(Supervisor)模式的切换,只能在中断程序(服务子程序)中才能调用相应的指令。

 

11.2011/8/24----Linux 0.11

  今天回家晚, 在公司看Linux0.11解释 (潘晓雷). 前面的boot部分不能全部理解, 以后再来复习. 看到第四章<进程的描述>, 感觉与uC/OS类似哦.

原创粉丝点击