嵌入式课程:实验0——OK6410开发板Linux环境搭建


?

 实验0:OK6410开发之Linux环境搭建

一、 实验环境:

Ubuntu20.04,VMware16.2

二、 实验过程:

1.Ubuntu的安装:

打开VMware,点击主页新建虚拟机,找到自己下载好的镜像文件点击确定,后面默认即可。以下是Ubuntu下载官网和VMware下载官网

Ubuntu下载官方地址

VMware下载官网

2.Ubuntu换源:

因为Ubuntu的官方源在国外网站需要FQ所以每次更新下载会非常慢,所以最好换成国内的源进行更新。具体操作如下:

Ctrl+Alt+T打开终端。

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak #备份原来的源。
?
sudo gedit /etc/apt/sources.list #打开sources.list #配置文件更换源。

删除里面的源添加以下的内容:

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
?
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
?
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
?
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
?
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
?
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
?
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
?
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
?
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
?
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse focal

这里是阿里的源,其他的源可以自行查找下

sudo apt-get update #再输入命令更新源。
?
sudo apt-get upgrade #最后输入命令更新一下软件即可。

更新完如下:

img?

3.Ubuntu切换root账户

这里参考Ubuntu20.04开启root账户的方法步骤

3.1. 第一步

以普通用户登录系统,创建root用户的密码

在终端输入命令:

sudo passwd root

然后输入设置的密码,输入两次,这样就完成了设置root用户密码了(注意Linux系统下密码是没有回显的)

img?

3.2. 第二步

修改 50-ubuntu.conf 文件

在终端输入命令:

sudo gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf

在文件末尾增加如下两行:

greeter-show-manual-login=true
?
all-guest=false

img?

3.3. 第三步

修改 gdm-autologin 文件

在终端输入命令:

sudo gedit /etc/pam.d/gdm-autologin #打开文件

前面加 # 注释掉第三行的 auth required pam_succeed_if.so user != root quiet_success

img?

3.4. 第四步

修改 gdm-password 文件

在终端输入命令:

sudo gedit /etc/pam.d/gdm-password #打开文件

前面加 # 注释掉第三行的 *auth required pam_succeed_if.so user != root quiet_success

img?

3.5. 第五步

修改 /root/.profile 文件

在终端输入命令:

sudo gedit /root/.profile #打开文件

将文件末尾的 mesg n 2> /dev/null || true 这一行注释掉加上 tty -s&&mesg n || true

img?

3.6. 最后一步

赶紧注销重新登录试一下吧

选择 未列出(Not listed)? 然后输入root以及你之前设置的密码,即可成功登录

img?

这样就变成root账户了。

4.交叉编译器 arm-linux-gcc安装

/*

后面具体要用到的文件在这

链接:百度网盘 请输入提取码 提取码:lcbl

*/

打开终端输入

mkdir forlinx 

来新建forlinx文件

将 arm-linux-gcc-4.3.2.tgz 文件拷贝到 forlinx 目录下,然后终端打开forlinx

cd forlinx
?
mkdir /usr/local/arm
?
tar zxvf arm-linux-gcc-4.3.2.tgz -C /

编译器解压到/usr/local/arm

把交叉编译器路径添加到系统环境变量中,以后可以直接在终端窗口中输入 arm-linx-gcc 命令来编译程序。

在终端中执行: gedit /etc/profile

添加以下四行到该文件中:

export PATH=/usr/local/arm/4.3.2/bin:$PATH
?
export TOOLCHAIN=/usr/local/arm/4.3.2
?
export TB_CC_PREFIX=arm-linux
?
export PKG_CONFIG_PREFIX=$TOOLCHAIN/arm-none-linux-gnueabi

保存,退出。

reboot #重启
?
echo $PATH #查看环境变量是否更新

arm-linx-gcc是一个32位的编译器而Ubuntu20.04是一个64位系统所以需要安装32位的库,否则可能出现command not found的情况

安装32位库指令:

sudo apt-get install libc6-i386

然后输入arm-linux-gcc -v检查安装

出现下图就ok说明安装成功。

img?

5. 编译 UBOOT 和 Linux 内核

5.1安装make跟gcc,后面编译需要

sudo apt-get install make
?
sudo apt-get install gcc

5.2 解压和编译uboot源码

将 uboot 源码压缩包 ‘uboot1.1.6_FORLINX_6410.tgz’拷贝到 forlinx 目录下,解压并编译,Ubuntu 下操作过程如下所示:

tar zxf uboot1.1.6-V5.50-2014-09-19.tar.gz

编译 256M(128M) 内存平台 Uboot 方法:

进入 uboot1.1.6 目录、配置 config、编译:

cd uboot1.1.6
?
make forlinx_nand_ram256_config  #(配置适用于 256M 内存平台的 config,128M的换成make forlinx_nand_ram128_config)
?
make clean
?
make

如果编译成功,将在 ‘uboot1.1.6’目录下产生名为 ‘u-boot.bin’的二进制文件。该文件即我们 需要烧写到 Nandflash 的 U-boot 映像文件,

img?

6.编译 Linux 系统

将压缩包 ‘FORLINX_linux-3.0.1.tar.gz’ 拷贝到forlinx文件下,解压:

tar zxf FORLINX_linux-3.0.1.tar.gz

打开解压后的linux-3.0.1文件

cd linux-3.0.1

6.1 配置内核

安装 ‘libncurses5’,以方便后面使用 ‘make menuconfig’ 命令

sudo apt-get install libncurses5-dev

如果失败sudo apt-get update更新下库

6.2 编译内核

make zImage

这里会报一个错如下,原因是新版本kernel的文档更新后不允许define这种写法

img?

我们进入错误文件进行修改

cd /root/forlinx/linux-3.0.1/kernel
?
gedit timeconst.pl

将373行的if (!defined(@val))改成if(!@val)就可以了

img?

保存,退出。

make zImage

编译一段时间后在forlinx/linux-3.0.1/arch/arm/boot的软件目录下生成zImage说明就编译成功了。

img?

img?

6.3 配置功能

完成编译后就可以在/forlinx/linux-3.0.1下

make menuconfig

开始配置硬件。

假如使用 wifi 功能的话,需要用 make menuconfig 命令对所使用的 wifi 进行下配置再编译内 核。配置方法如下: 在命令行输入 make menuconfig,会出现内核配置图形界面,然后依次选择:Device Drivers--->Network device support --->Wireless LAN --->Select rtl wifi,其中 Realtek 8192C USB WiFi 对应 使用 rtl8188 芯片的 usb wifi 模块,Realtek 8189E SDIO WiFi 对应飞凌的 8189ES 的 SDIO wifi 模块。选 择相应的配置然后点 Select,然后一步步点“Exit”退出,最后提示是否保存配置,点“yes”配置完成。

img?

7.制作 yaffs2 文件系统映像

将压缩包 ‘FileSystem-Yaffs2.tar.gz’及文件系统映像制作工具 mkyaffs2image-nand256m 和 mkyaffs2image-nand2g 拷贝到forlinx文件中 解压缩文件系统源码包:

tar zxf FileSystem-Yaffs2.tar.gz

在 Linux-3.0.1\filesystem\Yaffs2 文件系统制作工具 中有两个制作工具:

mkyaffs2image-nand2g 和 mkyaffs2image-nand256m

(1) mkyaffs2image-nand256m 制作出的映像,适用于 256M 的 nandflash 的平台 制作命令:

    ./mkyaffs2image-nand256m FileSystem-Yaffs2 rootfs.yaffs2

(2) mkyaffs2image-nand2g 制作出的映像,适用于 1G,2G 或者 4G 字节 nandflash 的平台 制作命令:

 ./mkyaffs2image-nand2g FileSystem-Yaffs2 rootfs.yaffs2

最后在文件系统源码包同级目录下生成 rootfs.yaffs2 文件,此文件即是可以下载到平台 nandflash 中的 yaffs2 文件系统映像。

假如用以上命令制作映像不成功,可能原因是制作工具权限不正确,需先修改下权限,修改权限的 命令:

 chmod 777 mkyaffs2image-nand256m

使用另外一个制作工具,修改权限的命令:

 chmod 777 mkyaffs2image-nand2g

注意:mkyaffs2image 可执行文件是使用 Linux3.0 源代码目录 yaffs2 文件夹下 utils 目录中的 mkyaffs2image.c 文件编译出来的,如果有兴趣可以自己制作适合 256MB NandFlash 和 2G NandFlash 的 Yaffs2 工具。

img?

这样OK6410的Linux的环境文件就全部配置好了。

?