#申请原创#
搭建基于Eclipse+arm-gcc+pyocd+cmsis-dap的开发环境 没拿到开发板的时候,就看到群里面一直在讨论关于程序烧录的问题,等拿到的开发板后发现,这个程序的烧录和仿真确实不容易搞,看到网友的测试加上自己的摸索,终于可以完成烧录和仿真了。 由于公司的要求,不可以在公司使用keil这样的收费软件,所以只好研究在gcc环境下搭建一套平台来完成程序的开发和调试。 1、 概述 准备在windows平台下,基于eclipse+gcc-arm-none-eabi+pyocd+cmsis-dap完成一套开发环境的建立。 关于eclipse、gcc-arm编译器,pyocd等软件的下载和安装请各位大神自行百度搜索,这里就描述如何采用这套系统进行基本环境的建立。 eclipse软件:gnumcueclipse-4.4.2-2018-09-win32.win32.x86 gcc-arm软件:gcc-arm-none-eabi-10.3-2021.10-win32 2、 编译环境的建立 1)工程建立: 打开eclise软件,选择File->New->Project(选择C Project) ,然后可以看到如下图所示的工程选择和工程名输入画面。我们这里输入工程名t3,这个名字实际可以随意。 注意:这里提示一点,eclipse工程的存储路径不要含有中文,否则将来仿真的时候会出现无法找到源文件的情况。 点击“Next”后,进入到如下配置画面,具体的信息选择,可以参考画面上的配置信息 配置完成后,继续点击“Next”,会看到一个工程路径配置的画面,如果我们是第一次新建工程,按照我们的需要将vendor CMSIS name修改一下,这个名字将来决定了 几个文件的名字,我这里修改为lks32mc08x 。 输入完成后,继续点击“Next”。这一步没啥说的。 继续点击“Next”,我们将看到下面要求我们输入GNU ARM Cross Toolchain的画面,前面我们已经准备好了交叉编译器,这里面我们需要选择到编译器的路径,最好不要带中文字符。 输入文成后,直接点击“Finishi”,这样工程建立完成,基本工程目录结构如下图所示。 工程下的文件夹我们简单介绍一下, Includes:这个文件夹我们不需要维护,编译后,所有相关的工程内头文件路径都会出现在这个文件夹下面。 src:这个文件夹下基本上都是我们自己的工程文件,需要我们在开发过程中根据需要添加。 system:这个文件夹非常重要,下面的移植过程都会在这里面完成,是用来支持这个芯片的基础文件,里面会包含CMSIS的相关文件,芯片设备库驱动文件等。 include:这个文件夹基本没用,不用维护。 ldscripts:这个文件下面包含了与芯片和工程有关的链接脚本文件,原则上如果芯片的基本参数输入没问题的话,基本不需要修改。 2)芯片驱动移植 这个移植过程基本上是对system目录下相关文件夹内容的增添改。system文件夹下面包含include和src两个子文件夹,具体的展开如下图所示。 System/include文件夹下相关文件得移植工作,这个文件夹下面我就关注cmsis和lks32mc08x两个文件夹,其它的不需要特殊维护。 l cmsis文件夹的移植 如果前面vendor CMSIS name输入正确的话,这里面应该会看到lks32mc08x.h和system_lks32mc08x.h这样两个头文件,我们需要将凌鸥官方提供的lks32mc08x.h和basic.h的内容整合到这个文件里面,具体的文件内容可以参见后面的附件中源码。 l Lks32mc08x文件夹得移植 这个文件夹下面包含了官方提供得设备驱动文件,如果没啥特殊情况,把官方提供得外设库中得头文件复制过来,直接粘贴到这个文件夹下面就可以了。 System/src文件夹下相关文件得移植工作,这个文件夹下面我就关注cmsis和lks32mc08x两个文件夹,其它的不需要特殊维护 l cmsis文件夹 这里面包含两个文件,system_lks32mc08x.c文件内容主要包含System_init函数,用来配置系统时钟,我们需要调整,具体参见附件中源码。 l lks32mc08x文件夹 这里面存放的是外设库文件,可将官方提供设备驱动复制到这里。这里有一点不明白,官方提供的外设库中,有个叫lks32mc08x_nvr的,只给了一个编译后的文件,没有源文件,不知道什么意思,这个文件在gcc下面应给没办法好好支持了。希望官方可以提供一个源文件出来。 3)编译和错误处理 在移植完成后,我们可以尝试编译一下了,有错误在所难免,我们需要根据实际情况调整一下就好了。 错误1:提示没有basic.h文件,应为文件内容让我移动到了lks32mc08x.h文件中,所以删除basic.h的引用,增加lks32mc08x.h的引用就可以了。 错误2:提示缺少类似hardware_init.h头文件的情况,从官方例子中复制一个过来就好了,需要适当修改。 3、 仿真环境的建立 前面已经提到了,会采用pyocd+cmsis-dap来完成仿真环境搭建,采用pyocd有个好处,就是官方提供的keil5下面的pack包我们可以直接借用,不用考虑flash编程算法这样的令人挠头的问题。 配置过程这里面不详述了,给出配置的结果和说明,如下图所示: 这里面我强调几个地方: 第一个:pyocd的选择,这里面可以直接找到你的python安装路径下面的pyocd-gdbserver.exe文件路径导入就可以。 第二个:Board后面的仿真器必须被系统自动识别出来,如果没有直接显示出来可以点击“Refrsh”按钮后,在下拉菜单中找到,选中你实际连接的仿真器。 第三个:Override target必须选中,并且填入我们实际仿真的芯片lks32mc081c8t8 。 第四个:Bus speed建议选择为1MHz以下,应为官方手册中已经强调了,最高为1MHz,所以如果没有挑战精神的人,就不要往上选了。 第五个:Flash mode必须选择为Sector erase,应为我测试了chip erase失败了。 第六个:Other options,这个必须要填如图中的命令,对于pack路径根据实际情况自己存放。如果没有自虐倾向的人,建议放到根目录下,比较容易输入。 一切准备就绪可以开始仿真了。 4、实际测试 我将官方例子中的通过Uart0发送信息的程序移植过来,1秒向串口打印一串字符。 5、经验总结 我手头的仿真器都是基于3.3V系统的,刚开始的时候为线路板施加5V点,无论如何也无法完成芯片识别,根据网友的实践经验,把系统电压调成3.3V,仿真器一切正常,可以识别也可以烧录和仿真了。感谢各位高人的脑洞打开。 6、软件源码
|