ucos在2410上的移植

ucos的移植非常简单,作者是这样说的。 官方网站上有现成的移植范例,作者是Michael Anburaj 在他的主页上有最新移植版本, http://www.geocities.com/michaelanburaj/ 上不了外网的点这里ARM (7TDMI, 720T, 920T) port for uC/OS-II ,或复制链接到迅雷。 当然,你首先要有ucos,这里用的是ucos2.51,随书光盘里的,解压到c盘, 移植作者的范例是用makefile写的,用nmake编译, 貌似网上没有单独的nmake.exe,下了一个也不能用,所以你要有vc6.0,如果你想编译这个makefile的话 当然也可以用gcc,但ucos实验,很少有人在linux下做吧。 解压下载的arm_ucos_1.161.zip 把Ex1_S3c2410x Ex2_S3c2410x arm_ucos 文件夹复制到C:/SOFTWARE/uCOS-II 然后打开一个终端,cd到C:/SOFTWARE/uCOS-II/Ex1_S3c2410x/bin/arm下 输入nmake就可以生成可执行bin文件,一个ram的一个rom的 用dnw下载那个ram的到0x30004000地址,作者用的就是这个地址,要改的话, 修改nakefile的RO_BADR_RAM=0x30004000, 就可以运行了。 windows下大家学arm用的都是ads,把代码加到新建的ads工程下,错误一大堆 原因是作者用了几个预编译定义了条件编译,从makefile的输出就可以看到,比如 armasm -pd "ENDIAN_CHANGE SETL {FALSE}" -li -pd "ADS SETL {TRUE}" -pd " EB SETL {FALSE}" -apcs /noswst/interwork -pd "__APCS_INTERWORK SETL {TRUE}" -pd "THUMB_INTERWORK SETL {TRUE}" -pd "THUMB_CSTART SETL {TRUE}" -pd "THUMB_TASKS SE TL {TRUE}" -pd是-PreDefine缩写,意思是Pre-execute a SET{L,A,S} directive 所以我们的工作是找出有预定义的地方,在代码中加入编译选项 建工程的时候注意.a文件不要加进去,.a文件实际上是汇编文件。 编译的时候出现bad symbol的报错就是预定义的条件编译没有申明导致的 比如ENDIAN_CHANGE,解决办法是在该源文件头定义一个这样的变量 出错的地方是ENDIAN_CHANGE的话,就加上这么一句 GBLL ENDIAN_CHANGE ENDIAN_CHANGE SETL {FALSE} 是TRUE还是FALSE就看-pd的内容 然后,应该就可以编译通过了。^_^ 一开始把THUMB_TASKS 设为TRUE,作者也是这么设的 编译是通过了,但下到板子上运行时打印了 Developed by Michael Anburaj,http://geocities.com/michaelanburaj/ 这句话之后,就出现了Dabort exception!!! 进入了while(1)的死循环, 后来把THUMB_TASKS SETL {FALSE},就可以了, 大概是thumb指令是16位, 导致arm指令没有对齐的缘故。

你可能感兴趣的:(c,exception,windows,linux,汇编,makefile)