前言: 目前针对ARMCortexA7裸机开发文档及视频进行了二次升级持续更新中,使其内容更加丰富,讲解更加细致,全文所使用的开发平台均为华清远见FSMP1A开发板(STM32MP157开发板) 针对对FSMP1A开发板,除了CortexA7裸机开发篇外,还包括其他多系列教程,包括CortexM4开发篇、FreeRTOS篇、Linux基础及应用开发篇、Linux系统移植篇、Linux驱动开发篇、硬件设计篇、人工智能机器视觉篇、Qt应用编程篇、Qt综合项目实战篇等。除此之外计划针对Linux系统移植篇、Linux驱动开发篇均会进行文档及视频的二次升级更新敬请关注! 开发板更多资料领取可关注华清远见在线实验室领取 进入正题先来简单介绍一下该款开发板的CortexA处理器 ARM在CortexA系列处理器大体上按性能可以排序为:CortexA77处理器、CortexA75处理器、CortexA73处理器、CortexA57处理器、CortexA53处理器、CortexA15处理器、CortexA9处理器、CortexA7处理器、CortexA5处理器等。需要指出的是,单从命名数字来看,CortexA7似乎比A9低端,但是从ARM的官方数据看,A7的架构和工艺都是仿照A15来做的,单个性能超过A9并且能耗控制更好。截止2017年ARM公司的CortexA系列处理器产品如下图所示。 处理器学习概括 STM32MP1除了有CortexM4内核外,还包含2个CortexA7核心。接下来开始学习STM32MP1的CortexA7核心相关知识。ARMCortexA核的学习方法和CortexM核心有比较大的差别。基于CortexM4的开发,因为有STM32CubeMX工具和HAL库函数的支持,基本上可以满足大部分开发者的需求,很少需要了解处理器的体系结构、汇编指令和汇编编程的内容。但CortexA核的复杂度高、灵活度高,需要有比较复杂的引导程序(例如:UBoot)和操作系统(例如:Linux)的支持。如果要深入学习嵌入式Linux底层开发技术,需要很好的了解CortexA核的特性和汇编编程。后续章节会结合实验和仿真环境,陆续学习CortexA7内核的工作模式、寄存器组织、程序状态寄存器、存储系统、流水线、异常处理等处理器相关知识,以及汇编指令、汇编编程、C混合编程等内容。 CortexA7开发环境搭建 本章节主要介绍windows下的开发环境搭建。推荐使用win1064bit系统进行安装。我们将安装以下软件。 Xshell7(免费版) STM32CubeProgrammer Windows下交叉编译工具链 Eclispse与OpenOCD Xshell7安装 由于在后续的实验中需要使用到串口调试终端和ssh登陆Linux操作系统,因此需要安装一个调试工具,这里以xshell为例,读者也可以根据自己的个人习惯选择。 Xshell7免费版安装包可以从xshell官方网站https:www。netsarang。comzh通过邮件申请免费版本,也可以使用资料光盘中【华清远见FSMP1A开发资料1工具软件】的Xshell7。0。0108p。exe安装包进行安装。 双击安装包后会先检查当前系统环境,如果系统依赖不满足则会自动安装缺失的部分。 环境安装完成后将会出现如下界面 点击下一步 点击我接收许可协议中的条款 选择要安装的默认目录后点击下一步 点击安装 安装完成会出现如下界面 安装完成后第一次启动需要指定一个配置文件默认保存路径,这里一般默认即可。 然后出现如下界面,由于是免费版本,所以直接点击关闭即可。 随后会弹出如下界面,点击确定 至此,xshell7(免费版),就安装成功了。 STM32CubeProgrammer安装 STM32CubeProgrammer是STMicroelectronics的官方工具,用于在STM32平台上的Flash设备中创建分区并对各个分区进行镜像烧录。 可以使用STM32CubeProgrammer来烧录STM32MPU板上支持的所有Flash设备。后续镜像烧录将会用STM32CubeProgrammer工具进行eMMC和SDCsrd的镜像更新。 STM32CubeProgrammer安装包可以从ST官方网站https:www。st。comendevelopmenttoolsstm32cubeprog。html通过邮件申请最新版本,也可以使用资料光盘中【华清远见FSMP1A开发资料1工具软件】的en。stm32cubeprogv240。zip安装包进行安装。 首先需要将安装包解压,解压完成后得到如下文件。 双击SetupSTM32CubeProgrammer2。4。0。exe允许安装向导。 点击Next 点击Next 点击Iacceptthetermsofthislicenseagreement 这里选择安装路径,用户可以自行指定。点击Next之后会提示,将要创建一个安装目录。 勾选STM32TrustePackageCreator选项 在安装的过程中会弹出如下界面,安装相关的驱动程序。点击下一步 程序将会自动安装所需的驱动程序,安装完成后会弹出如下界面。 点击完成 切换到STM32CubeProgrammer界面后点击Next,创建桌面快捷键。 安装完成界面 出现上述界面后点击Done。至此STM32CubeProgrammer就安装完成了。 安装GCC编译工具 双击【华清远见FSMP1A开发资料1工具软件Yagarto工具包】目录下的yagartobu2。21gcc4。6。2ccnl1。19。0gdb7。3。1eabi20111119。exe进行安装 点击Next 继续点击Next 点击Install 点击Next 点击Finish,完成安装 安装Yagarto工具包 双击【华清远见FSMP1A开发资料1工具软件Yagarto工具包】目录下的yagartotools20100703setup。exe进行安装 点击Next 点击Next 点击Next 选择安装路径,然后点击Next 点击Install进行安装 点击Finish,完成安装 安装JRE 双击【华清远见FSMP1A开发资料1工具软件】目录下的文件jre6u7windowsi586ps。exe进行安装 点击接受,过程可能需要一段时间 点击完成即完成安装 Eclipse与OpenOCD的安装 Eclipse为我们后面学习裸机编程的主要开发工具,Eclipse是一套集成的IDE,可进行程序的编辑、编译、调试等操作。 资料光盘【华清远见FSMP1A开发资料1工具软件eclipseeclipsecppheliosSR1win32。zip】下的eclipsecppheliosSR1win32。zip是一套已经安装好各种插件的开发包,是一个绿色版的eclipse,我们可以将它解压到电脑的任何位置,之后双击eclipse。exe就可以使用了。 OpenOCD是用来连接各种仿真器的一款工具,通过该工具我们就可以控制目标CPU的运行了。该工具位于【华清远见FSMP1A开发资料1工具软件OpenOCDSTM32MP1。zip】同样也是一个绿色版本,我们可以将它解压到电脑的任何位置即可。在该压缩包的bin目录下的openocd。exe即为可执行程序,在后面的章节里我们讲述如何使用该工具。 前言: 目前针对ARMCortexA7裸机开发文档及视频进行了二次升级持续更新中,使其内容更加丰富,讲解更加细致,全文所使用的开发平台均为华清远见FSMP1A开发板(STM32MP157开发板) 针对对FSMP1A开发板,除了CortexA7裸机开发篇外,还包括其他多系列教程,包括CortexM4开发篇、FreeRTOS篇、Linux基础及应用开发篇、Linux系统移植篇、Linux驱动开发篇、硬件设计篇、人工智能机器视觉篇、Qt应用编程篇、Qt综合项目实战篇等。除此之外计划针对Linux系统移植篇、Linux驱动开发篇均会进行文档及视频的二次升级更新敬请关注! 开发板更多资料领取可关注华清远见在线实验室领取 进入正题先来简单介绍一下该款开发板的CortexA处理器 ARM在CortexA系列处理器大体上按性能可以排序为:CortexA77处理器、CortexA75处理器、CortexA73处理器、CortexA57处理器、CortexA53处理器、CortexA15处理器、CortexA9处理器、CortexA7处理器、CortexA5处理器等。需要指出的是,单从命名数字来看,CortexA7似乎比A9低端,但是从ARM的官方数据看,A7的架构和工艺都是仿照A15来做的,单个性能超过A9并且能耗控制更好。截止2017年ARM公司的CortexA系列处理器产品如下图所示。 处理器学习概括 STM32MP1除了有CortexM4内核外,还包含2个CortexA7核心。接下来开始学习STM32MP1的CortexA7核心相关知识。ARMCortexA核的学习方法和CortexM核心有比较大的差别。基于CortexM4的开发,因为有STM32CubeMX工具和HAL库函数的支持,基本上可以满足大部分开发者的需求,很少需要了解处理器的体系结构、汇编指令和汇编编程的内容。但CortexA核的复杂度高、灵活度高,需要有比较复杂的引导程序(例如:UBoot)和操作系统(例如:Linux)的支持。如果要深入学习嵌入式Linux底层开发技术,需要很好的了解CortexA核的特性和汇编编程。后续章节会结合实验和仿真环境,陆续学习CortexA7内核的工作模式、寄存器组织、程序状态寄存器、存储系统、流水线、异常处理等处理器相关知识,以及汇编指令、汇编编程、C混合编程等内容。 CortexA7开发环境搭建 本章节主要介绍windows下的开发环境搭建。推荐使用win1064bit系统进行安装。我们将安装以下软件。 Xshell7(免费版) STM32CubeProgrammer Windows下交叉编译工具链 Eclispse与OpenOCD Xshell7安装 由于在后续的实验中需要使用到串口调试终端和ssh登陆Linux操作系统,因此需要安装一个调试工具,这里以xshell为例,读者也可以根据自己的个人习惯选择。 Xshell7免费版安装包可以从xshell官方网站https:www。netsarang。comzh通过邮件申请免费版本,也可以使用资料光盘中【华清远见FSMP1A开发资料1工具软件】的Xshell7。0。0108p。exe安装包进行安装。 双击安装包后会先检查当前系统环境,如果系统依赖不满足则会自动安装缺失的部分。 环境安装完成后将会出现如下界面 点击下一步 点击我接收许可协议中的条款 选择要安装的默认目录后点击下一步 点击安装 安装完成会出现如下界面 安装完成后第一次启动需要指定一个配置文件默认保存路径,这里一般默认即可。 然后出现如下界面,由于是免费版本,所以直接点击关闭即可。 随后会弹出如下界面,点击确定 至此,xshell7(免费版),就安装成功了。 STM32CubeProgrammer安装 STM32CubeProgrammer是STMicroelectronics的官方工具,用于在STM32平台上的Flash设备中创建分区并对各个分区进行镜像烧录。 可以使用STM32CubeProgrammer来烧录STM32MPU板上支持的所有Flash设备。后续镜像烧录将会用STM32CubeProgrammer工具进行eMMC和SDCsrd的镜像更新。 STM32CubeProgrammer安装包可以从ST官方网站https:www。st。comendevelopmenttoolsstm32cubeprog。html通过邮件申请最新版本,也可以使用资料光盘中【华清远见FSMP1A开发资料1工具软件】的en。stm32cubeprogv240。zip安装包进行安装。 首先需要将安装包解压,解压完成后得到如下文件。 双击SetupSTM32CubeProgrammer2。4。0。exe允许安装向导。 点击Next 点击Next 点击Iacceptthetermsofthislicenseagreement 这里选择安装路径,用户可以自行指定。点击Next之后会提示,将要创建一个安装目录。 勾选STM32TrustePackageCreator选项 在安装的过程中会弹出如下界面,安装相关的驱动程序。点击下一步 程序将会自动安装所需的驱动程序,安装完成后会弹出如下界面。 点击完成 切换到STM32CubeProgrammer界面后点击Next,创建桌面快捷键。 安装完成界面 出现上述界面后点击Done。至此STM32CubeProgrammer就安装完成了。 安装GCC编译工具 双击【华清远见FSMP1A开发资料1工具软件Yagarto工具包】目录下的yagartobu2。21gcc4。6。2ccnl1。19。0gdb7。3。1eabi20111119。exe进行安装 点击Next 继续点击Next 点击Install 点击Next 点击Finish,完成安装 安装Yagarto工具包 双击【华清远见FSMP1A开发资料1工具软件Yagarto工具包】目录下的yagartotools20100703setup。exe进行安装 点击Next 点击Next 点击Next 选择安装路径,然后点击Next 点击Install进行安装 点击Finish,完成安装 安装JRE 双击【华清远见FSMP1A开发资料1工具软件】目录下的文件jre6u7windowsi586ps。exe进行安装 点击接受,过程可能需要一段时间 点击完成即完成安装 Eclipse与OpenOCD的安装 Eclipse为我们后面学习裸机编程的主要开发工具,Eclipse是一套集成的IDE,可进行程序的编辑、编译、调试等操作。 资料光盘【华清远见FSMP1A开发资料1工具软件eclipseeclipsecppheliosSR1win32。zip】下的eclipsecppheliosSR1win32。zip是一套已经安装好各种插件的开发包,是一个绿色版的eclipse,我们可以将它解压到电脑的任何位置,之后双击eclipse。exe就可以使用了。 OpenOCD是用来连接各种仿真器的一款工具,通过该工具我们就可以控制目标CPU的运行了。该工具位于【华清远见FSMP1A开发资料1工具软件OpenOCDSTM32MP1。zip】同样也是一个绿色版本,我们可以将它解压到电脑的任何位置即可。在该压缩包的bin目录下的openocd。exe即为可执行程序,在后面的章节里我们讲述如何使用该工具。