mm32的gnu arm 工程

         mm32的f003系列芯片是基于arm的cortex-m0芯片,flash16k,ram4k,本来这么小的容量可以直接用iar和keil的软件免费编译,不过为了加深对gnuarm的理解,还是作了这么一个用gnuarm的工程,这个工程用cmake建立,理论上稍微改改就可以用于其他cortem0,cortexm3的芯片。github地址https://github.com/niexuzhong/mm32gnuarm

     首先安装arm gcc ,cmake,jlink,编辑器我用的visual studio code.这个工具确实不错。在linux下是个好东西。自带了git插件,向github提交的时候非常简单。

    库可以直接使用灵动公司的标准库。主要要改的是startup.s和cmakelist以及link script.其中cmakelist主要借鉴了https://zhen8838.github.io/2018/08/14/cmakestm32/  

cmake主要改了这么几个地方:源文件增加直接使用了cmake的aux_source_directory函数,这样可以自动搜索目录下的所有文件而不需要手动添加。处理器的类型改成cortem-m0,注释掉了浮点处理器。另外把汇编工具改成了g++,如果是自己的工程,可以在src下增加文件,然后在add_executable函数里面增加对应源程序即可。

ld和statrup.s文件的修改,这两个文件来自arm提供的cmsis_5,可以直接从github下载,主要有用的是gcc目录下的Ld和s汇编文件,ld文件修改比较简单,主要是根据器件实际的flash和ram修改标准文件中对应的参数,stack size我用的和灵动官方keil工程中的0x400,heapsize设为0,startup.s修改复杂一点,主要是根据keil的startup.s修改中断标号,然后增加weak修饰符对应的中断处理宏,如果你在自己的工程中直接加中断处理函数即可,名字需要和汇编文件中的一致即可。

其他几个文件都是从cmsis中拷贝过来的,缺哪个文件就拷贝哪个文件。

最后是jlink的flashsh烧写,如果是031的型号,Jlink里以及自带了,用官方的就可以,而f003的型号需要修改jlink的配置文件,我用灵动提供的官方pack打了补丁以后,f003的类型出来了,但是烧写总是报错,后来发现是烧写算法的程序可能有问题,于是把灵动支持keil中的pack里面的flm文件拷贝出来覆盖灵动提供jlink补丁包中的烧写文件就ok了

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值