【正点原子阿波罗STM32F767开发板试用体验】Linux编译环境-上

  • gavinM
  • LV3工程师
  • |      2017-12-28 22:48:30
  • 浏览量 1129
  • 回复:0
—————————————————————————————————————————— · 主要内容 · 安装开发工具 · 分析官方软件库-建立工程文件夹 · 准备工作 · 阿波罗STM32F767开发板套件 —————————————————————————————————————————— 开发STM32有多种方式,比如IDE开发,熟悉的MDK,IAR,VS2017,Eclipese等等. 但是笔者现在正在学习ARM嵌入式开发,需要在Linux上编译,使用非IDE开发环境, 也就是(编辑器 + 版本控制 + 编译器 + 下载 + 调试),这种方式比较原始,但是 能够深入了解整个编译过程,深入理解 开发过程。 Ⅰ、 安装开发工具 首先,我们安装相关工具: 1.安装交叉编译工具链arm-none-eabi 2.再者安装make,Ubuntu自带 3.安装编辑器SublimeText 4.安装git (linux下安装就不再详细介绍了,都比较简单, 找不到资源或者配置arm-gcc出问题的可以回复我哈) Ⅱ、 分析官方软件库-建立工程文件夹 我们知道早先ST官方提供STD库,其实就是对寄存器的一种封装,方便开发,但是 现在ST官方已经不再维护和更新STD库了,随之而来就是HAL库,STD库和HAL库还是 有区别的,后者不再是对寄存器的简单封装 ,而是建立成硬件抽象层。 这样有利于大型工程的开发,以及项目的移植,有助于开发人员更多的投入于应用和功能的开发 而不用过多的关注底层,避免重复造轮子的尴尬。 根据翻阅官方文档,关于Cube库的介绍,我总结的项目架构如下图所示: 1.图中的MCU相关就是底层寄存器相关的代码以及core核心代码,是属于MCU级别的代码; 2.板子相关的代码就是常说的BSP,板级驱动。 这样做的好处就是,换MCU的时候只需要更改MCU相关和HAL的接口部分,然后就可以了, 换板子,或者换外部设备等,就仅需要更改板子相关的代码,移植性非常强。 3.HAL就是硬件抽象层,通过以上的介绍,应该能够很清楚的明白这层含义了,就是把硬件 给剥离出来,由上层软件调用,这样上层软件就无须理会底层硬件到底具体是谁了。 4.Library层其实就是存放ST官方所说的中间件,包含例如: USB lib STem WIN File System FreeRTOS 这一层根据应用目的可选,如果用不到大型组件,或者不跑RTOS的话,就不是必须的。 5.Application 这一层就是放我们的应用代码,核心功能的实现代码,它可以直接调用HAL层的函数, 也可以调用中间件的函数。 好了,这样一来,再回头看官方的STM32F7Cube库就清晰明了。 上图就是官方Cube库的目录结构,其中Drives层里面有三个子目录: Drives |-------- BSP |-------- CMSIS |-------- STM32F7xx_HAL_Driver 这三个字文件夹正好对应这上上图中的一层方框,BSP就是板子相关的代码 CMSIS文件夹就是MCU级的相关代码,包括core核心,MCU片内外设等; 然后就是HAL库了。 再来看看Middlewares文件夹,这就是中间件,也就是如上所说的Lib层; 最后是Project文件夹,里面根据Board汇集很多官方Demo,也就是APP案例。 现在,根据以上的理解,我要给自己新键一个项目工程模板了, 当然,你也可以使用正点原子的Demo模板,我只是习惯了按照自己的理解来重新定义 工程目录结构如下: Project |----- arch (MCU级别代码,复制cube库下CMSIS相关内容) |----- dev (BSP板级设备驱动代码,使用什么就写什么) |----- libHAL (HAL库,复制Cube库下的HAL) |----- system (暂时就放个main函数,it函数文件) |----- application (建立LED.c文件,用来点亮led) 好了,今天先到这,明天发下篇。 今天理解了Cube-HAL库,建立工程文件夹和相关文件后, 就是要开始编写Makefile文件,编写链接脚本ld文件了。 —————————————————————————————————————————— 谢谢浏览,有什么不足之处,或者疑问和建议,欢迎回复或留言,一起互相学习探讨哈。 ——————————————————————————————————————————
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:0
x
收藏成功!点击 我的收藏 查看收藏的全部帖子