最近在看《基于Linux嵌入式原理与应用开发》认识了更多关于Linux的基础,mindmap笔记让脉络清晰了。这本书后面提供了一个关于ADS应用的小例子_ledcircle_,希望以此为基础不断深入学习,初学者共勉,哈。
要不断练习&练习!
1. 《led.asm(2): error: A1163E:Unknown opcode Block, , expecting opcode or Macro》
2. 《WINDOWS 7 下ADS1.2启动出现Unhandled Exception的解决办法》
一、 建立一个工程
1. 打开CodeWarrior
2. 可以在工具栏中单击New按钮,也可以在File菜单中选择New菜单。
l ARM Executable Image:用于由ARM指令的代码生成一个ELF格式的可执行映像文件。
l ARM Object Library:用于由ARM指令的代码生成一个armar格式的目标文件库。
l Empty Project:用于创建一个不包含任何库或源文件的工程。
l Makefile Importer Wizard:用于将Visual C的nmake或GNU make文件转入到CodeWarrior IDE工程文件。
l Thumb ARM Executable Image:用于由Thumb指令创建一个可执行的ELF格式的映像文件
l Thumb Executable Image:用于由Thumb指令创建一个可执行的ELF格式的映像文件。
l Thumb Object Library:用于由Thumb指令的代码生成一个armar格式的目标文件库。
3. 这里选择ARM Executable Image,“Project name:”工程文件名(本例:ledcircle);“Location”文本框的Set按钮选择工程保存的路径。然后单击确定。
4. 在File菜单下右击鼠标,选择Add Files可以把要用的源程序添加到工程中。
5. 本例中先需要新建源文件,在File菜单中选择New选项,选择标签页File,新建Init.s
6. 新建Main.c
7. 执行Add Files,添加Init.s和Main.c,这时会出现:
l DebugRel:使用该目标,在生成目标时,会为每一个源文件生成调试信息。
l Release:使用该目标不会生成任何调试信息。
l Debug:使用该目标为每一个源文件生成最完全的调试信息。
在这里,使用DebugRel目标。
二、 编译和链接工程
1. 进行目标配置
2. 单击Edit菜单,选择DebugRel Settings:
1) Target
l Linker:链接器,使用默认的ARM Linker。
l Post-Linker:选择对输出文件进行的操作,选择ARM fromELF表示在链接生成映像文件后,再调用FromELF命令。
2) Language Settings
使用默认设置就行。
3) Linker
l ARM Linker使用默认设置
l ARM fromELF中
Output format:转换的目标格式,这里选择Plain binart_这是一个二进制格式的可执行文件
Output file name:通过单击Choose可选择路径,不输入路径则在工程所在目录下。
3. 单击Project菜单下的make选项,进行编译和链接。
三、 Errors
l 在每行代码前加“Tab”即可,首行最好也空回车一下。
四、 最后结果
《led.asm(2):error: A1163E: Unknown opcode Block, , expecting opcode or Macro》
问题原因分析:
1.ARM汇编指令不支持顶格写,否则不能识别,指令前加上空格即可。
如果上面的不是,那么就是下面的情况了。
2. 声明变量时不要有空格。如下,nums前面不能有空格。
nums dcd 1,5,3
WINDOWS 7 下ADS1.2启动出现Unhandled Exception的解决办法
找到ADS的快捷方式,右键->属性。在属性框的“高级”页面中勾选”禁用桌面元素“。再用此快捷方式启动程序,就不会再出现该错误。