本帖最后由 le062 于 2018-5-20 21:17 编辑
目标芯片:京微齐力HME-M7
芯片基本情况:
- FPGA逻辑资源:12K LUT4 速度200M
- Cortex-M3,速度300M,192kB SRAM
- 集成USB DWCOTG 内置高速PHY
- 1000M ETH
- CAN * 2
- DDR2 / DDR3控制器
关于开发环境,fpga部分是官方的Primace软件,MCU例程用的是Keil。
由于长期使用IAR,已无法适应Keil,所以尝试在IAR下构建并调试这颗Cortex-M3。
构建部分:
1. 选定内核:Cortex-M3
2. 配置link文件
3. 编写startup_cmem7.s文件
参考其他iar arm芯片启动文件及keil启动文件修改
以上三部分修改后,可正常构建。
调试部分:
1. 添加Register list
这部分没有找到资料,是通过观察已支持芯片的Register信息琢磨出来的。
首先,编写CME-M7.ddf
- ;; Architecture extensions
- #include weak "ARMv7-M-ETM.ddf"
- #include weak "ARMv7-M-TPIU.ddf"
- #include weak "ARMv7-M-MPU.ddf"
- ;; Memory information ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;
- ;; Used to define address zones within the ARM address space (Memory).
- ;;
- ;; Name may be almost anything
- ;; AdrSpace must be Memory
- ;; StartAdr start of memory block
- ;; EndAdr end of memory block
- ;; AccType type of access, read-only (R), read-write (RW) or SFR (W)
- [Memory]
- ;; Name AdrSpace StartAdr EndAdr AccType Width
- Memory = CODE-RAM Memory 0x08000000 0x0801FFFF RW
- Memory = DATA-RAM Memory 0x20000000 0x2000FFFF RW
- Memory = Flash Memory 0x40000000 0x40FFFFFF R
- Memory = Peripheral Memory 0x41000000 0x4180FFFF W
- Memory = SystemSFR Memory 0xE0000000 0xE00FFFFF W
- TrustedRanges = true
- UseSfrFilter = true
- [SfrInclude]
- File = CME_M7.svd
复制代码
在这个文件中,指定了片上可访问地址范围及访问类型,一般是根据芯片的内存分布图修改
其次,编写CME_M7.svd
这是一份关于芯片寄存器描述及寄存器地址的
XML文档,直接从官方ide中找到现成的了。
当然也可以自己编写,13455行
最后,在Debugger中选定ddf文件
2. 找一个调试器
先测试了一下CMSIS-DAP,很不幸,这货貌似不支持多设备JTAG(以后继续再研究,也许可以通过OpenOCD + GDB搞定)
只能退而求其次,用jlink搞,关掉flash download,选定jtag模式
配置完成后,Download and Debug,一次成功,完美。
完整的IAR工程及代码,IAR版本 7.80.3
Github_VSF
写在最后,CME-M7中M3代码是跑在SRAM中的,不涉及flash下载,否则还要处理flash下载的问题,请自行研究。
此内容由EEWORLD论坛网友le062原创,如需转载或用于商业用途需征得作者同意并注明出处