ARM入门笔记

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所以叫笔记而不是文章,是因为它们完全是本人个人学习经验的总结,而这些经验都来自于其他前辈的无私奉献,在这里对这些乐于发表自己经验的前辈致以由衷的感谢!现在我把这些前辈的文章经过自己的理解写出来一方面是对于他们的尊重,另一方面也希望觉得本人的笔记有参考意义的朋友把这种精神继续传下去。再次声明,本人确实是个菜鸟,现在手头的板子是自己画的,以RT&ZQ的板子为底版,对部分电路进行了改动。比如加入了SD卡,IIC总线键盘,触摸屏,GPS,GPRS等等。并对LCD接口进行改造,使之完全适合手头的SHARP液晶。把网络,串口,USB这些调试用接口都外扩了,目的是使主板尽量小(目前第一版为了调试方便,主板特意画的比较大)。但是存储部分(RAMROM)没有做任何变动,在这里对RT&ZQ致谢!这块板子是本人第二个板子(第一块是个接口板,30根线。)所以走线,设计都经不起推敲,但是同样非常希望大家能够指点!板子基本元件清单说一下吧,方便其他人参考CPU:44B0RAM:HY57V641620ROM:AM29LV160NET:8019USB:D12KEY:ZLG7290LCD:SHARPLM7M632目前为止本人做的工作1板子的硬件调试是跟着软件来的2ADSAXD调试环境搭建3FLSH烧写笔记4UBOOT移植笔记5UCLINUX编译下载简单笔记6字符设备驱动开发C工程模板使用说明本模板用于使44B0运行C程序一般说来汇编用来初始化之后跳到C入口MAIN函数处一、关于工程文件1、本目录下建工程文件(.MCP)2、工程文件至少包含3个文件44binit.s44blib_a.s*.c(自己的c文件)3、44binit.s中开头部分INCLUDE两个文件MEMCFG.SOption.s用于基本设置注意这两个文件的存放目录,即让INCLUDE找到它们4、以上文件除自己的c文件之外均为三星公版,不需修改二、关于CodeWarrior设置1、DebugRelSetting里一般设置几项1)TargetSetting-Linker里选ARMLinker用于设置连接2)TargetSetting-Post-Linker选ARMfromELF用于生成FLASH烧录代码(只在RAM里运行而不烧录则不用)3)ARMLinker-ROBASE里添地址根据板子来,这板子上RAM接的NSCS6,地址0XC000000-0XC7FFFFF;FLASH接的NSCS0,地址0X00000-0XFFFFF地址分配原理见44B0数据手册内存管理那章的内存分配图想在RAM里调试就添0XC000000(比如0XC008000)的地址但是注意的是地址不要添过界,比如想在RAM里调试却添0X00000000程序可以进入C代码但没法运行再有想生成用于烧写得FLASH代码RO地址就需要设置为0X0000000开始的而且LAYOUT中也必须设置44BINIT.O为初始加载文件以上FLASH测试结论经FLASHPGM测试而且FLASHPGM不支持BIN文件只支持INTEL得HEX文件4)RW可以添可以不添一般RO解释为数据段,RW解释为数据段有时高兴了就添上0XC100000(RAM调试时)5)ARMLinker-OPTION-Imageentrypoint选择0xc000000(RAM调试时)6)ARMLinker-Layout-Object/Symbol里可以添工程起始程序44BINIT.O注意是.O不是.S和.0(零)也可以不添三、AXD设置1)按照BANYANGT或者ARM7正确设置调试代理BANYANGT、ARM7、H-JTAG都是代理,装哪个无所谓,一般认为BANYANGT好,但无论哪个调试之前必须运行代理2)在option-configureinterface里在sessionfile选择44b0.ini这个文件是初始化44b0寄存器的,必须运行3)Options-ConfigueTarget里本来有两项,上面上是硬件调试,下面是软件仿真(在电脑上仿真)用ARM7就改第一项(按照ARM7说明改),用BANYANGT就按照BANYANGT说明在下面再加个BANYANGT的驱动4)在general标签页选择attach,然后确定,最后在file-savesession,关闭AXD(在CodeWarrior里一DEBUG就自动打开)四、关于JTAG1)JTAG一般有几种SDT和WIGGLER我的是WIGGLER的,两者区别主要在并口25针定义不一样(不算复位脚),与板子上JTAG相连的脚不是区分JTAG类型的标志只要和44B0对上就行2)JTAG小板上与44B0大板上JTAH跳线RAM调试时都不用接烧FLASH才用到3)网上流传的JTAG小板上也有不用RST信号的版本,无所谓,RST信号不是标准的五、另外开始的时候犯了低级错误,没设置OM123跳线导致晶体不阵~~~其他的看万龙的ARM开发板使用手册,写的还不错模板:user94/mamajinco/upload/825806664.rar这部分可能过于简单,很少有人写,但是对于不了解ARM开发过程的人真的简单吗?我是菜鸟,在这卡了3天:)一般说来有几种方法,1)板子原来的BOOTLOADER程序或者为烧写而编写的专用ADS程序比较高级而快速的方法,很多现成的开发板都用这种方法(相对来说有实力的公司),此状态下CPU是运行的,所以速度快。比如ZLG的,但是对于初学或者不准备细研究硬件的人来说就比较麻烦,因为要编写(改写)ADS烧写程序。愿意的人可以看看。2)FLUTED和FLASHPGM一样,使用的好象叫边界扫描法,CPU此时并不运行,因此烧写的比较慢。在这里也不推荐FLUTED这个软件,原因比较简单,麻烦+速度慢。因为需要编写(改写)两个配置文件,而且是字符界面。倒是有人说这个软件只能在WIN98下用的说法好象不对(现在有可以让2000和XP下用的方法)喜欢的朋友可以用用3)FLASHPGM(推荐)很简单的程序,GUI界面,速度尚好。设置很简单,在CPU里选对型号,当然是3星的44B0。在FLASH里也一样,39LV160,29LV160都有。确定好地址,RAM地址我的是0XC000000(BANK7上)FLASH地址0X0(BANK0上)选完了以后读一下FLASH的ID(左下脚的按钮吧)能读出厂家的ID就行。然后是烧写了,PROGRAME按钮,注意的是FLASHPGM不支持BIN格式,按照下面方法处理。再有就是尽量在写之前擦一下,PROGRAME菜单里有个选项,打个钩就OK。具体烧写方法可以看我总结的另一篇文档,在这里只说说UBOOT相关的。前面说过UBOOT编译以后产生3个文件u-boot——ELF格式的文件,可以被大多数Debug程序识别;u-boot.bin——二进制bin文件,纯粹的U-BOOT二进制执行代码,不保存ELF格式和调试信息。这个文件一般用于烧录到用户开发板中;u-boot.srec——MotorolaS-Record格式,可以通过串行口下载到开发板中。FLASHPGM不支持BIN格式的,可以烧写u-boot——ELF格式的文件,别看它没扩展名,一样烧写。还有,如果你懒(和我一样),拿别人现成的BIN文件来烧,FLASHPGM还提供了一个BINTOS19的程序,就在它的安装目录下。具体用法运行它,它自己就告诉你了。注意:有时(尤其是FLASH里已经有程序的时候)0XC000000会莫名奇妙的提示内存不可以写,有几个方法可以试试:把地址改成0x10000000(好象是缓存地址),之后点EREASE擦除芯片,擦除一般说来是不成功的,最后无论如何都下不去,没关系,这时候关闭擦除对话框,然后0x10000000地址不变,烧FLASH,我一般是烧写一个我自己写的LED测试小程序把内存占上:)。回来这时候再把0X1000000换成0XC000000再按照正常操作,一般可以正常。这现象的原因就是过去下的程序(多数是不正确的程序)正在运行占用了RAM与ROM,下个LED测试小程序就是把这几个部分清除掉。如果以上方法还不正常,可以用另一个程序叫FLASHP就差2个字母:)很好!在这里对这个程序的作者致敬!!用这个软件擦FLASH,然后再用FLASHPGM烧,原因是FLASHP擦厉害,但写好象有些问题~~UBOOT移植操作(1)[0]目录结构◆board:和一些已有开发板有关的文件,比如Makefile和u-boot.lds等都和具体开发板的硬件和地址分配有关。◆common:与体系结构无关的文件,实现各种命令的C文件。◆cpu:CPU相关文件,其中的子目录都是以U-BOOT所支持的CPU为名,比如有子目录arm926ejs、mips、mpc8260和nios等,每个特定的子目录中都包括cpu.c和interrupt.c,start.S。其中cpu.c初始化CPU、设置指令Cache和数据Cache等;interrupt.c设置系统的各种中断和异常,比如快速中断、开关中断、时钟中断、软件中断、预取中止和未定义指令等;start.S是U-BOOT启动时执行的第一个文件,它主要是设置系统堆栈和工作方式,为进入C程序奠定基础。◆disk:disk驱动的分区处理代码。◆doc:文档。◆drivers:通用设备驱动程序,比如各种网卡、支持CFI的Flash、串口和USB总线等。◆fs:支持文件系统的文件,U-BOOT现在支持cramfs、fat、fdos、jffs2和registerfs。◆include:头文件,还有对各种硬件平台支持的汇编文件,系统的配置文件和对文件系统支持的文件。◆net:与网络有关的代码,BOOTP协议、TFTP协议、RARP协议和NFS文件系统的实现。◆lib_arm:与ARM体系结构相关的代码。◆tools:创建S-Record格式文件和U-BOOTimages的工具。==========================================================================================[1]u-boot.1.1.2目录下有Makefile1)设置编译器可以看到这一项:ifeq($(ARCH),arm)CROSS_COMPILE=arm-linux-也就是说这里所用的交叉编译器是arm-linux-gcc,u-boot默认是用这个的,也有用arm-elf-gcc的,arm-elf-tools-20030314.sh,用它来编译,没有问题。如果最后MAKE的时候提示找不到arm-linux-gcc就是这错了,改一下。arm-elf-gcc是用来编译uClinux内核的工具,arm-linux-gcc用来编译LINUX2)加进自己板子的项目搜索B2的这部分文件B2_config:unconfig@./mkconfig$(@:_config=)arms3c44b0B2dave后面加上这部分:TT_config:unconfig@./mkconfig$(@:_config=)arms3c44b0TTT2T切记在@./mkconfig$(@:_config=)arms3c44b0TTT2T前面的是Tab来的,TT_config:unconfig也是一样,不能用空格代替,因为它是靠这个来识别命令的==========================================================================================[2]在宿主机(PC机)上建立arm-elf-gcc交叉编译环境1)建立arm-linux-gcc编译环境在RedHatLinux系统下以root用户登录,将cross-2.95.3.tar.bz2文件复制到/目录下,安装:#tarjxvfcr

1 / 55
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功