1.将Linux的执行文件放到板子上运行

嵌入式系统

1.嵌入式系统 定制

2.硬件:核心芯片+底板

	软件:驱动+应用  驱动+系统+应用(并发,网络,文件。。。)

3.系统:linux 开源   模块化  支持芯片众多   功能

4.交叉开发环境:

		1)硬件:PC <------net(协议最简单)-----> Board

		2)软件:代码,交叉开发工具(board的芯片类型)下载工具(把二进制文件从PC搬移到板子上 tftp)

因为指令集不一样,所以x86架构的不能直接在ARM中使用,所以要交叉编译

gcc和arm-gcc是不一样的

movi -h

出现信息则不用烧录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CfPw0Okp-1688121833986)(C:\Users\1\AppData\Roaming\Typora\typora-user-images\image-20230630111535154.png)]

没有出现信息则需要烧录
烧写的过程
1.断电 SD卡取出来
2.金属片拨片向上表示可写
3.SD卡插上之后 右键  管理--磁盘管理
4.imageWriter中打开u.bin--->write--->success

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3pJxM6r9-1688121833986)(C:\Users\1\AppData\Roaming\Typora\typora-user-images\image-20230630141428727.png)]

ifconfig eth0 192.168.2.250(同网段)

此时的a.out应该是用交叉编译arm-linux-gcc 1.c  生成的
生成的a.out应该更改权限 chmod 777 a.out
并且将a.out放到mytftp文件中

tftp -g -r a.out 192.168.2.249

在超级终端中./a.out即可运行程序

2.自行配置文件

bootloader	引导启动程序(硬件软件初始化) 
uboot       u.bin  

kernel	操作系统运行到内核来  uImage
 
dtb           xxx.dtb(设备数文件)

rootfs	根目录中所有文件的集合:根文件系统 ramdisk-----也运行到内核中

bootloader

bootloader不属于操作系统,采用汇编+C语言开发(汇编先去初始化C语言环境然后用C去运行),需要针对特定的硬件平台去编写
依赖CPU的体系结构,也需要硬件的差异去配置,定制化的与硬件强相关的软件

bootloader的操作模式

自启动模式
交互模式:
	hit any key to stop autoboot: 0

常用的bootloader:

GRUB和U-boot

GRUB:一般是x86的操作系统中使用

U-boot:在嵌入式的平台下,引导启动基本上都是u-boot

U-boot
开源的软件,支持的体系结构和开发板众多

命令:环境设置、数据传输、存储器访问、加载运行
pri:显示所有的环境变量
set:设置新的环境变量
save:将当前定义的所有的环境变量保存

MMC命令(烧写命令) eMMC命令
mmcinfo:查看MMC设备信息
mmc read/write devnum addr start_blk blkcnt
mmc write 0 41000000 0 2(每一块512byte)
==>
tftp 先下载
movi write kernel 41000000 = mmc write 0 41000000 1 2  

实现网络下载的自启动

设置自启动命令

在这里插入图片描述

然后save

启动

实现emmc的自启动

保存到硬盘,再从硬盘中读出来

tftp 41000000 uImage
movi write kernel 41000000
tftp 42000000 exynos4412-fs4412.dtb 
movi write dtb 42000000
tftp 43000000 ramdisk.img
movi write rootfs 43000000 300000

设置emmc自启动命令
set bootcmd movi read kernel 41000000\;movi read dtb 42000000\;movi read rootfs 43000000 300000\;bootm 41000000 43000000 42000000

【uboot】的制作

1.代码编译-----> u.bin

board(底板)

common(命令)

disk(磁盘)

drivers(设备数)

makefile

boards.cfg:  中的Target指定目标是用来对应的芯片和板子编译到u-boot里去

tar -xvf u-boot-2013.01

vi Makefile

编译:
#if.....

185 CROSS_COMPILE ?= arm-linux-

#end.....

make qong_config

make -j8 (多线程编译,加快编译速度)

编译出定制化的指示和qong的二进制文件 u-boot.bin

得到一个可以把内核加载起来的uboot

2.确认uboot是否支持芯片(samsung exynos 4412)

arch(关于芯片目录)—>arm–>cpu—>armv7–>exynos

支持:继续

不支持:1.下载最新版的uboot 2.找芯片厂家提供

确认板子是否支持(fs44112)

支持:继续

不支持:1.下载最新版的uboot 2.找板子厂家提供 找SOC相同的板子的代码(origen)

制作bin文件

0)  make distclean  //清除所有的中间二进制文件 和 配置 第一次需要
1) 在board中找到Samsung公司的板子 cp origen fs4412
2) 在board.cfg中修改 target
3) 修改头文件: cp include/configs/origen.h include/configs/fs4412.h
2) make fs4412_config
3)  make -j8

直接往emmc里面烧录程序

SD卡模式:
tftp  u-boot.bin 41000000
movi write uboot 41000000
断电,切换emmc模式
上电

现象:板子变砖了
思考:
硬件:工具
软件:第一个程序运行后没反应?
1.没调用 点灯(最开始)—>程序最开始的位置
|–>入口函数–>链接文件–>Makefile
链接文件:
.lds结尾: TOPDIR\arch\u-boot.lds
start.S

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐