一、首先介绍我的硬件环境
网上有很多写u-boot移植的教程和步骤的,都是只写步骤,没有介绍系统,按照网文操作,很大概率会失败,我是深深的吃了很多亏,所以写一篇详尽的教程,给我这样的小白,同时也留下记录,便于以后查找,复现环境。
1、我的电脑:win10专业版(64bit)
2、虚拟机软件: VMware Workstation 14 Pro
3、ubuntu: ubuntu-16.04.6-desktop-i386.iso
下载地址:http://releases.ubuntu.com/16.04/ 选择 32-bit PC(i386) desktop image
特别说明:由于我采用的u-boot是2009.11版本的,参考的韦东山的u-boot-1.1.6和tekkamanninja u-boot-2009.11 还有《深度实践嵌入式Linux系统移植》配套的u-boot代码都是早期版本的。所以我下载的系统是32bit ubuntu。
我也试过试过ubuntu的64bit的系统,比如 ubuntu16,ubuntu18,发现在安装交叉编译器时,运行“arm-linux-gcc -v”,老是提示“no such file or directory”。网上查找原因说是因为ubuntu的系统是64bit的,但是搭建的arm-linux-gcc 编译器是32bit的,缺少32位运行库导致的。百度,谷歌,各种操作,安装这个库,那种库,都不好使,32bit 的gcc 编译器就是运行不起来。
我就升级了gcc 的版本,想着安装gcc 64位编译器,试着安装了 arm-linux-gcc-4.6.4-arm-x86_64.tar.bz2 和 arm-linux-gcc-5.4.0.tar.gz,安装都能安装成功,编译一些,自己写的hello world.c 文件和其他的led程序,烧写到板子上都没有问题,但是编译tekkaman大神移植好的u-boot文件 “U-boot-2009.11_tekkaman-master”,会有一些编译错误,但是修改后,成功编译,但是烧录到mini2440上,却运行不成功。我想这不应该了,别人都成功了,怎么我的就没成功,人家都运行好好的。最后看tekkaman的博客(http://blog.chinaunix.net/uid-20543672-id-94368.html),发现大神在完成u-boot移植的时候是在2010.01.19 ,我想那时候还没有ubuntu18 和 arm-linux-gcc-5.4.0.tar.gz编译器吧。所以果断放弃了ubuntu 64bit系统和64bit gcc 编译器。
然后,我就在虚拟机上安装ubuntu14 (32bit)系统,在 官网(http://releases.ubuntu.com/trusty/)下载了ubuntu14 的 32-bit(PC) desktop image,安装,发现一直报错,提示硬盘错误,如下:
最后发现这个镜像有问题,我计算的HD5和原来发布的时候不一样,也就是这个镜像被人改过。心中一万个草泥马跑过,官网镜像还搞这!!!
果断下载了ubuntu16 (32bit)系统,这回终于没有幺蛾子了,安装成功,正常使用!完美!
4、arm-linux-gcc : 使用了友善的arm-linux-gcc-4.4.3.
吸取了以前的教训,还是安装友善提供的交叉编译器,别又有幺蛾子。
5、开发板:mini2440,2M nor flash(S29AL016J70),256M nand flash(K9F2G08U0C), 两片32MB SDRAM(K4S561632N), 网络芯片 DM9000EP
这个没啥说的,买的,咸鱼上淘的二手的。
6、烧录器:韦东山的 EasyOpenJTAG V1
用这个,没有用Jlink,主要是图他方便。
7、u-boot版本:u-boot-2009.11.tar.bz2 (ftp://ftp.denx.de/pub/u-boot/ )
8、参考文章:
《深度实践嵌入式 Linux系统移植》范展源 刘韬著 及其附带的光盘例程
《嵌入式Linux应用开发完全手册》 韦东山著 以及其附带的JZ2440 手册和配套视频
《I.MX6U 嵌入式Linux驱动开发指南》正点原子
移植U-Boot.2009.08到友善之臂mini2440(一)
https://www.linuxidc.com/Linux/2011-05/35982.htm
二、ubuntu 16.04 的环境搭建
新装的ubuntu 像一个白纸啥都没有,
2.1、修改更新源,把镜像由官网的改为国内的机构或大学,我这里选择了清华的更新源和阿里的源。
1)首先我们要找到国内的镜像源路径
我选择了清华的镜像源,链接如下:
https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
打开链接如下图:
接下来按图中提示操作即可。
2) 备份系统自带更新源配置文件
打开终端切换到管理员(修改配置文件需要较高权限,如不切换也可以在每条命令前加sudo,不过个人感觉有点麻烦),进入 /etc/apt 目录,找到 sources.list 文件,进行备份,如下图:
也可以直接用命令:cp /etc/apt/sources.list /etc/apt/sources.list.backup ,则不用切换目录直接备份。
3)修改配置文件sources.list内容
输入命令:gedit sources.list (也可以用 vi sources.list 或 vim sources.list )打开文件,把文件内容全部删除,再把更新源路径粘贴进来。
粘贴后如下图:
然后在其后面添加阿里云的:
# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
:wq 保存,退出。
4)更新源
输入命令:apt update (也可以用apt-get update,apt与apt-get的区别)
sudo apt-get update sudo apt-get upgrade
2.2 安装 VIM , rar , zip 等软件
安装VIM
使用命令 来安装vim。
$ sudo apt-get install vim
Ubuntu刚安装的时候是不能解压rar文件的,只有在安装了解压工具之后,才可以解压。
安装:sudo apt-get install unrar
卸载:sudo apt-get remove unrar
安装zip
sudo apt install unzip
2.3 安装FTP:Ubuntu 和Window 文件互传
1)开启Ubuntu下的FTP服务
打开 Ubuntu 的终端窗口,然后执行如下命令来安装 FTP 服务:
sudo apt-get install vsftpd
等待软件自动安装,安装完成以后使用如下 VI 命令打开/etc/vsftpd.conf,命令如下:
sudo vi /etc/vsftpd.conf
打开以后 vsftpd.conf 文件以后找到如下两行:
local_enable=YES
write_enable=YES
确保上面两行前面没有“#”,有的话就取消掉,完成以后如图 4.1.1 所示:
图 4.1.1 vsftpd.conf 修改
修改完 vsftpd.conf 以后保存退出,使用如下命令重启 FTP 服务:
sudo /etc/init.d/vsftpd restart
2 )Windows 下 FTP 客户端安装
Windows 下 FTP 客户端我们使用 FileZilla,这是个免费的 FTP 客户端软件,可以在 FileZilla官网下载,下载地址如下:https://www.filezilla.cn/download,
安装,打开软件,进行软件设置
ubuntu作为FTP服务器,FileZilla 作为客户端,客户端肯定要连接到服务器上,打开站点管理器,点击:文件->站点管理器,打开以后如图 4.1.5 所示:
点击“新站点(N)”按钮来创建站点,新建站点以后就会在“我的站点”下出现新建的这个站点,站点的名称可以自行修改,比如我将新的站点命名为“Ubuntu”。
选中新创建的“Ubuntu”站点,然后对站点的“常规”进行设置,设置如图 4.1.7 所示:
设置好以后,点击“连接”按钮,第一次连接可能会弹出提示是否保存密码的对话框,点击确定即可。连接成功。
特别说明:我发现经过上面配置后,mini2440 通过ftp 还是不能获取到服务器上的文件,所以我就进行了下面配置:(至于为啥,我也不太懂,也没人给我说,后面再解决吧)
为了开发板可以在主机上获取文件,并加载文件,配置TFTP服务。和上面的TFTP配置不冲突。
步骤1 使用如下命令,安装相关软件包 tftp(服务端)、tftp(客户端)和 xientd。
sudo apt-get install xinetd tftpd tftp
步骤2 建立配置文件。在 /etc/xinetd.d/ 下建立一个配置文件 tftp, 在文件中输入以下内容:
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
步骤3 通过如下命令建立 TFTP 服务器目录(上传文件与下载文件的位置),并且更改其权限。
mkdir /tftpboot
chmod 777 /tftpboot -R
步骤4 通过如下命令重新启动相关服务:
service xinetd restart
至此TFTP服务已经安装完成了,下面进行测试。
在 tftpboot 目录下,新建一个 测试文件 test.txt,修改其权限(777).然后进行测试:
通过 get 命令,可以把当前目录下的 test.txt 文件,通过 TFTP 上传到它的服务文件目录。这时,在 /tftpboot 下会出现 test.txt 文件。
通过 put 命令,可以从 /tftpboot 中下载 test.txt 文件。这样就验证了 TFTP服务配置的正确性。
在文件上传和下载结束后,可以通过 quit 命令退出。
按照以上步骤,需要说明,在操作步骤2之前,需要获取root权限(su root),才能正常进行后面的步骤。
在put 和get 命令测试的时候,需要把 test.txt 文件的权限设置为 777。
未完待续。。。。