U-Boot的作用
U-Boot移植的步骤
(1)建立自己的开发板类型
(2)修改程序连接地址
(3)将终端禁止的部分改为下图所示
(4)修改启动代码
(5)修改内核配置
(6)加入Nand Flash读函数
(7)加入Nand Flash的初始化函数
(8)修改GPIO配置
(9)提供Nand Flash的相关宏定义
(10)加入Nand Flash设备
(11)设置Nand Flash环境
安装arm-linux-gcc交叉编译工具
wget粘贴文件路径
解压缩交叉编译工具源码 # tar jxvf gcc-
执行pwd命令确定所在目录
./运行该文件
1.4解决64位系统下安装32位软件的问题
sudo apt-get update
sudo apt-get install lsb-core
再次运行./arm-linux-gcc,提示arm-linux-gcc:no input files,意思是arm-linux-gcc命令没有输入文件,说明该文件在当前环境下可用。
1.5执行export命令将arm-linux-gcc所在目录临时加入PATH中
2、bootloader的配置、移植和编译
wget获取 然后tar解压缩
2.2实验楼实验楼
把smdk2410目录下的所有文件都拷贝到了我们的eduk2410目录下,并做相应的更名和修改,修改Makefile实验楼
2.3.配置U-Boot
运行make命令编译
关于课堂程序
实验楼
/ copy_file.c /
include
include
include
include
include
include
define BUFFER_SIZE 1024 / 每次读写缓存大小,影响运行效率 /
define SRC_FILE_NAME "src_file" / 源文件名 /
define DEST_FILE_NAME "dest_file" / 目标文件名 /
define OFFSET 10240 / 复制的数据大小 /
int main()
{
int src_file, dest_file;
unsigned char buff[BUFFER_SIZE];
int real_read_len;
/ 以只读方式打开源文件 /
src_file = open(SRC_FILE_NAME, O_RDONLY);
/ 以只写方式打开目标文件,若此文件不存在则创建该文件,访问权限值为644 /
dest_file = open(DEST_FILE_NAME, O_WRONLY | O_CREAT,
S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
if(src_file < 0 || dest_file < 0)
{
printf("Open file error\n");
exit(1);
}
/ 将源文件的读写指针移到最后10KB的起始位置 /
lseek(src_file, -OFFSET, SEEK_END);
/ 读取源文件的最后10KB数据并写到目标文件中,每次读写1KB /
while((real_read_len = read(src_file, buff, sizeof(buff))) > 0)
{
write(dest_file, buff, real_read_len);
}
close(dest_file);
close(src_file);
return 0;
}