1.Ozone无法下载 解决方法: 只支持3.26h 打开Ozone目录下 的JLinkDevices.xml 将RAMsize 修改为 WorkRAMAddr="0x1FFE0000" WorkRAMSize="0x00004000" /> 2.Ozone 下载elf文件夹有bug,SP和Reset_Handler都变成了0 解决方法:只能用JFLASH 下载hex文件 然后用Ozone的attach &Halt program模式调试 3.Ozone下载后无法启动调试 解决方法:用Jflash Run Applicaiton 启动一下,然后再启动调试 菜单:Target-->Manual Programming-->Start Application. 将编译开关中的-g 换成 -G ,Ozone认识了,但是它下载正确的数据的同时,在另外一个地方涂改了,把bootloader擦除了 .还是只能照旧 4.不认识嵌入式汇编 解决方法:嵌入汇编要增加开关 --gnu_asm 5.嵌入汇编 编译工具不做语法检查 ,查看汇编没有对R0写入__STACK_TOP 直接就将R0写入MSP值 解决方法: 注意=和: void SetSTACK(void) { REGISTER uint32 sp1 = (uint32)__STACK_TOP; ASMV_KEYWORD("MSR MSP,%0" :: "r" (sp1):"memory"); } uint32 GetSTACK(void) { REGISTER uint32 sp1 = (uint32)__STACK_TOP; ASMV_KEYWORD("MRS %0,MSP" : "=r" (sp1)); return sp1; } 6.32bit 指针增加的时候,一次增加4个字节,当用 == 比较作为结束条件时,注意两个指针都要被4整除,否则会跑过头造成越界访问 解决方法: 用uint8指针搬运非对齐数据 7.!!!注意指针是否越界访问 ,是不是在FLASH 空间 RAM 空间 设备空间 Link 脚本里的变量是无法取地址