文章目录
uboot又从2010到2013版本
一、SD卡制作启动盘
1.拷贝sdfuse_q
Windows下:将提供资料中的sdfuse_q拷贝到虚拟机的共享目录下
进入虚拟机:将共享目录下的sdfuse_q文件夹拷贝到~
目录下
cp /mnt/hgfs/share/sdfuse_q/ ~ -a
2.编译
进入文件夹编译:
cd ~/sdfuse_q
make
chmod 777 *.sh
3.识别SD卡
-
用读卡器将SD卡插入电脑
-
让虚拟机识别
-
查看挂载情况,确定设备节点
df -Th
可以看到节点是sdb1
,它挂载在/media/522C-B6E6
4.制作SD卡
将uboot烧写到SD卡中。
cd ~/sdfuse_q
sudo ./mkuboot.sh /dev/sdb1
二、安装uboot2013
1.拷贝
在电脑上重新插入SD卡,如果提示需要格式化,格式化即可。
虚拟机上在SD卡目录下创建目录sdupdate
,
sudo mkdir /media/522C-B6E6 sdupdate
并将实验移植后的镜像
的u-boot-fs4412.bin
拷贝到该目录下。
cp /mnt/hgfs/share/u-boot-fs4412.bin /media/522C-B6E6/sdupdate
2.SD卡启动方式
将SD卡拔出插入开发板卡槽内,拨码拨至1000
(SD卡启动)
连接开发板
启动串口调试工具
当前的eMMc的u-boot是2010版本,显示SDMMC,即SD卡启动成功。
3.SD烧写到flash
uboot下:将SD卡中2013版本的uboot烧写到flash,这样eMMC中的uboot就变成了2013版本。
sdfuse flashall
关机,将拨码拨至0110
(eMMC启动),重启开发板
显示eMMC,uboot版本为2013.
三、交叉开发环境搭建
1.配置开发网络环境
将虚拟机的ip修改为192.168.100.192
2.配置交叉工具链
sudo gedit /etc/bash.bashrc
确保这句话在文件的末尾处,如果不在,添加这句话在文件末尾。
export PATH=$PATH:/usr/local/toolchain/toolchain-4.6.4/bin/
重启配置文件
source /etc/bash.bashrc
工具链的测试
arm-none-linux-gnueabi-gcc -v
3.交叉开发编译
#include<stdio.h>
int main(){
printf("hello\n");
return 0;
}
使用交叉开发编译版本的gccarm-none-linux-gnueabi-gcc
来生成可执行文件,这个文件就拷到开发板上运行。
4.拷贝文件
将实验二中的U-Boot之外的镜像
文件夹下的文件拷贝到共享文件夹下。
虚拟机下:
cp /mnt/hgfs/share/exynos4412-fs4412.dtb /mnt/hgfs/share/ramdisk.img /mnt/hgfs/share/uImage /tftpboot/
四、eMMC方式启动开发板
1.设置eMMC
还是将拨码拨至0110
(eMMC启动)
2.tftp方式传输文件
(1)测试ping
ping Ubuntu主机ip
ping 192.169.100.192
可以ping通虚拟机才可以tftp传文件到开发板上
(2)烧写
uboot命令行下:
- 烧写内核镜像
tftp 41000000 uImage
movi write kernel 41000000
- 烧写设备树文件
tftp 41000000 exynos4412-fs4412.dtb
movi write dtb 41000000
- 烧写文件系统镜像
tftp 41000000 ramdisk.img
movi write rootfs 41000000 300000
这个300000
是烧写大小
3.设置启动参数
uboot命令行下:
setenv bootcmd movi read kernel 41000000\;movi read dtb 42000000\;movi read rootfs 43000000 300000\;bootm 41000000 43000000 42000000
setenv bootargs
saveenv