
1、和ARM-M4内核开发使用IDE不同的是,基于Linux开发就更丰富多样了。在Linux搭建了什么平台就可以用什么开发方式。基于C++的开发是最高效和便捷的,基于python,go,andoid的开发也可以,明确有android的系统(把android列进来,因为也是一个linux derivation的衍生平台)2. Linux的开发可以在开发板上直接开发,但是,需要在开发板上建立完整的开发工具平台,如CC,gcc,linaro-gcc等,或者按照完整的python及其依赖包。所以,这些开发工具安装起来并不容易,同时,除了开发,在执行的过程没有什么用处,而且嵌入式系统性能有限,大的开发项目就很慢了。 在嵌入式系统做开发包的典型是树莓派,可以支持anaconda这样的大开发包,当然是一个miniconda。其他的更不在话下,在A7内核上通常不建议。 但是这样的开发有个最大的好处,就是本地开发,所得及所见,没有依赖环境和交叉编译兼容性的问题,因此,也可以算一种方式。 3、更多的是采用host计算机上交叉编译的方式。通常需要用Linux操作系统,对于多数windows系统就要上一个笨重的虚拟机,其实采用双操作系统的更好用。直接在windows系统安装支持交叉编译的编译器也可以,不过,往往需要一个minWG,也不好用。 交叉编译器有2种,linaro-xxx,和arm-xx原生的gcc交叉编译器,需要看准了版本,是否支持ARM-a7系列。 4、然后就,把build好的二进制可执行文件下载到开发板上,就可以运行调试的。对于SD卡,简单粗暴的直接copy就可以,使用网口连接,就要开通ssh,用scp下载。 在使用QT creator的开发,可以直接ping通IP地址,下载,编译运行的工作,一键完成。 5. 连接开发板,最基本的方式就是使用UART协议串口连接,如下图, ![]() 使用st-link v2端口串口通讯,115200-8-1-N,就可以直接进入控制台 ![]() 这个控制台的root没有设置密码 这次采用了主机直连以太网口,但是没有联通,开发板没有启动http服务,在演示程序是可以访问的,应该是需要增加一个启动命令, ![]() 没有设置ifconfig的IP地址,只有MAC地址, 对于外设,访问是用类似文件访问的方式执行的,对于GPIO,是/sys/class/gpio文件夹下就可以直接操作,进入这个文件夹,却没有启动gpio,对比其他系统,增加了一个leds文件夹。 整体的系统结构还需要进一步探究。 6、对应于系统的build,st的wiki有非常详细的介绍步骤,而且因为有CubeProgrammer等配套工具,这样的方式兼容性好。对于需要自定义硬件的情况,自制系统是必选项。 首先选择源,对于stm32MP1是优选yocto,这个是专门针对嵌入式系统的,注重效率和完整性,入门难度中等,更新速度快,大约1-2个月一次更新。相对更推荐记忆debian的系统,这样的系统和Ubuntu非常接近,很多在Ubuntu上调试通过的包,在debian系统可以很容易通过。尤其对于DL引擎,面向大众的demo都是基于ubuntu16.4.0的。Ubuntu的开放性不那么好,自制img的资源不那么丰富,用debian就有非常多的手册和范例学习。用debootstrap在host计算机上就可以完成,用qemu模拟器结合debootstrap就更方便,这个过程比较耗时间的,而且出现问题解决比较慢,需要加入邮件列表提交问题,不过会遇到开发社区的开发者会亲自回答,并会对代码进行修订。 在随后的测试中,需要逐步把这些步骤测试下。 |
赞一个 |
基于STM32MP1和STM32MP2在嵌入式Linux平台上部署有效的安全保护机制
利用STM32MP1和STM32MP2为嵌入式Linux提供有效的安全措施:供当今决策者参考的3条宝贵经验
STM32MP1 WiFi连接
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【STM32MPU 安全启动】 TF-A BL2 TrustedBoot原理学习
《STM32MPU安全启动》学**结
《STM32MPU安全启动》学习笔记之optee 如何加载CORTEX-M核和使能校验
《STM32MPU安全启动》学习笔记之TF-A BL2校验optee和uboot的流程以及如何使能
《STM32MPU 安全启动》课程学习心得+开启一扇通往嵌入式系统安全领域深处的大门。
《STM32MPU安全启动》 课程学习心得