如何将.a文件如何将c语言程序导入单片机机中?

嵌入式高速发展的今天,大量的嵌入式设备使用了Arm为核心的芯片。我们会接触到越来越多的嵌入式设备,一个问题油然而生:数量如此巨大的嵌入式设备的安全性如何?目前针对嵌入式安全的技术和标准可谓千姿百态,除了必要的硬件安全技术,与之配套的安全软件也是必不可少的一部分。今天我们要介绍的是基于Arm 的可信固件Trusted Firmware-A,简称TF-A。它是一个开源软件,运行在一个硬件隔离的安全环境中并提供安全服务。

华清远见开发环境,FS-MP1A平台

本实验基于tf-a-stm32mp-2.2版本,然后添加意法半导体提供的补丁文件。在意法半导体官方的tf-a中移植我们自己的tf-a。

如果之前已经建立了源码目录,并且导入了源码包,即可跳过本小节。


将ST官方补丁文件打到tf-a源码中:

要对TF卡进行烧录,需要先将TF接入到ubuntu系统中。


由上图所示只有“/dev/sdb1”一个分区则需要重新进行分区。

如果显示如下内容,则表示设备已经被挂载,需要卸载掉设备再删除分区。

卸载完成后重新执行删除分区命令


注意:最后-p /dev/sdb参数中的/dev/sdb需要按照实际ubuntu中的tf节点为准,否则可能发生不可预料的后果。

1.4.3 建立自己的平台

导入交叉编译工具链(如果还未安装SDK可参考《SDK工具链安装》章节进行安装)

验证开发工具是否安装正确,显示版本信息如下图所示。


2) 增加板级相关文件
进入到tf-a源码目录

执行如下指令编译trusted:

编译成功后,最后显示内容(部分截图)如下:
编译完成后会在上级build/trusted目录得到如下文件:

由于在移植过程中会多次烧写固件并且会导致正常tf-a无法启动,因此推荐使用TF卡启动的方式来验证。
tf-a需要使用trusted 格式的u-boot镜像启动,具体的编译方法可参考《U-boot移植》章节中的“生成Trusted镜像”小节。
将TF接入ubuntu系统后,查看TF卡分区


/dev/sdb为TF卡设备。如果该设备下只有/dev/sdb1一个分区则重新分区。
执行如下指令烧写u-boot:

将拨码开关设置为SD卡启动方式:
将制作好的TF卡插入开发板,上电后会出现如下错误提示:
这个错误产生的原因是电源初始化错误,需重新调整电源相关配置。

1.4.4 调整设备树电源配置
由于官方参考板DK1采用电源管理芯片做电源管理,而FS-MP1A采用分离电路作为电源管理,本例需要将文件中原有电源管理芯片相关内容去掉,增加上固定电源相关内容

1) 去掉原有电源管理内容
DK1参考板电源管理芯片挂在I2C4上,而FS-MP1A并未使用I2C4总线,所以直接将I2C4相关内容完全删除即可。
将文件中i2c4节点相关内容整体删除,删除内容如下:

2) 添加固定电源配置

固定电源配置通常添加在根节点下,在根节点末尾位置添加如下内容(红色字体为需要添加的内容):

重新烧写后启动现象如下:
可以看到现在已经可以启动到u-boot了。

参考原理图可知eMMC使用的是SDMMC2总线,当前所使用的设备树文件中没有SDMMC2的支持,所以需要增加相关内容才能正常驱动eMMC。
由于在使STM32MP1芯片很多管脚为多功能复用管脚,且很多管脚具备同样的功能,所以移植eMMC时需要确认硬件设计是使用的是那些管脚,根据原理图确认后管脚对应关系为:

    重新编译烧写后可以通过ums或者scp的方式更新eMMC中的u-boot即可。具体可参考《通过linux更新eMMC中的u-boot》章节。

1、将十进制数128D转换成二进制数。128D=B

2、将十进制数142D转换成十六进制数。142D=8EH

4、直接将B写成十六进制数。B=CAH

1、如果一个二进制负数的有效位N=6,那么它的原码在计算机中应该占用几个字节。

2、如果一个二进制负数的有效位N=14,那么它的原码在计算机中应该占用几个字节。

3、如果一个二进制负数的有效位N=20,那么它的原码在计算机中应该占用几个字节。

4、求139的原码、反码、补码。

5、求-139的原码、反码、补码。

6、求-1139的原码、反码、补码。

1、直接写出-25的原码、反码、补码。11

2、以二进制无符号数表示254。

3、直接写出68的BCD码。

5、分别将1248以二进制、压缩BCD码、非压缩BCD码、ASCII码存放在计算机内存中。……

1、根据你的理解,单片机由哪几部分组成。

CPU,ROM,RAM,并行口,串行口,中断系统,定时计数器,时钟电路

2、8051单片机随机存储器有多少字节。128字节

3、8051单片机程序存储器有多少字节,它的用途是什么?4K字节,存放程序

4、程序地址存储器PC的用途是什么?指示当前指令的下一条指令地址

5、8051单片机的输入输出线共有多少根?32根

1、简述8051单片机内存的分区及其用途。

2、如何确定当前工作寄存器组?

3、可位寻址区有多少字节?能否作字节寻址操作?16字节可以

堆栈应该设在内存的哪个区?第3区

5、能否将特殊功能寄存器区作为随机存储器使用?不能

1、四个I/O口中,哪些有内部上拉电阻、哪些没有上拉电阻、没有的怎么办?

我要回帖

更多关于 如何将c语言程序导入单片机 的文章

 

随机推荐