S3C2440移植uboot之编译烧写uboot

2021-05-20 10:31:17 浏览数 (1)

移植环境

主 机:VMWare–ubuntu16.04 开发板:S3C2440 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2012.04.01.tar.bz2

获取uboot

  进入https://www.denx.de/wiki/U-Boot下载uboot

  一直往下拉选择如下

  将下载好的压缩包解压到任意文件夹,并创建source insight工程。将下载好的u-boot-2012.04.01.tar_2.bz2放到ubuntu服务器/work/system中。执行以下命令解压uboot:

代码语言:javascript复制
cd /work/system
tar xjf u-boot-2012.04.01.tar_2.bz2

进入文件夹配置uboot

代码语言:javascript复制
cd u-boot-2012.04.01
make smdk2410_config
make

  编译报错如下

  发生了段错误,arm-linux-ld 工具链版本不支持uboot中新的属性。我们的交叉编译链版本为3.4.5,因此,需要更换新的交叉编译链支持uboot。

更新交叉编译工具

  将arm-linux-gcc-4.3.2.tar.bz2上传到ubuntu服务器/work/tools。将arm-linux-gcc-4.3.2.tar.bz2解压到/work/tools/tmp文件夹。

代码语言:javascript复制
cd /work/tools
mkdir tmp
tar xjf arm-linux-gcc-4.3.2.tar.bz2 -C tmp/

  解压完成,进入tmp目录查看usr/local/arm/4.3.2/bin文件夹,有各种工具链。

代码语言:javascript复制
cd tmp/usr/local/arm/4.3.2/bin
ls

配置环境变量

  将新的工具链解压到根目录并配置环境变量,新的交叉编译工具链就生效了。

代码语言:javascript复制
sudo tar xjf arm-linux-gcc-4.3.2.tar.bz2 -C /

为什么要设置环境变量?   因为我们执行ls 命令时,系统会去寻找所执行的命令,去哪里找呢?就在环境变量中。在ubuntu查看环境变量如下

  设置新的环境变量

代码语言:javascript复制
export PATH=/usr/local/arm/4.3.2/bin:.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

  执行

代码语言:javascript复制
arm-linux-gcc -v

  永久修改环境变量需要修改/etc/environment

代码语言:javascript复制
sudo vi /etc/environment

  修改前

代码语言:javascript复制
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/work/tools/gcc-3.4.5-glibc-2.3.6/bin"

  修改后

代码语言:javascript复制
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin"

  重启后即可生效。

  再次编译新的uboot

代码语言:javascript复制
cd /work/sysytem/u-boot-2012.04.01
make distclean
make smdk2410_config
make

  编译没有报错,将新的uboot.bin烧写到开发板发现,程序不能运行。所以需要分析并修改uboot

0 人点赞