1.将Linux的执行文件放到板子上运行
嵌入式系统
1.嵌入式系统 定制
2.硬件:核心芯片+底板
软件:驱动+应用 驱动+系统+应用(并发,网络,文件。。。)
3.系统:linux 开源 模块化 支持芯片众多 功能
4.交叉开发环境:
1)硬件:PC <------net(协议最简单)-----> Board
2)软件:代码,交叉开发工具(board的芯片类型)下载工具(把二进制文件从PC搬移到板子上 tftp)
因为指令集不一样,所以x86架构的不能直接在ARM中使用,所以要交叉编译
gcc和arm-gcc是不一样的
movi -h
出现信息则不用烧录
没有出现信息则需要烧录
烧写的过程
1.断电 SD卡取出来
2.金属片拨片向上表示可写
3.SD卡插上之后 右键 管理--磁盘管理
4.imageWriter中打开u.bin--->write--->success
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 引导启动程序(硬件软件初始化) u.bin
kernel 操作系统运行到内核来 uImage xx.dtb(设备数文件)
rootf 根目录中所有文件的集合:根文件系统 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模式
上电