目录
1 S3C2240搭建前准备
首先:准备用于学习的ARM开发板,这块板子是以前朋友离开公司时送我的,比较老旧。现在我想把它拿来练练手。
LCD屏体应该是4.3寸的,我还不能确定,还没开始测试LCD屏。
然后:将开发板设置成NOR Flash,采用不带系统启动模式,同时用串口连接开发板和PC,采用SecureCRT打开串口链路,再用DNW软件可以将以后生成的系统烧入开发板。目前电脑一般都是USB口,就需要把USB转换成RS232,可以用串口精灵等工具来安装驱动。
SecureCRT的配置:
连接成功后:
DNW的配置:
最后:连接成功后可以进入搭建linux的工作
2 通过虚拟机安装Linux系统
虚拟机可以选择VMware workstation和VM VirtualBox,由于VM VirtualBox是完全免费的。我采用VM VirtualBox:VirtualBox-6.1.14-140239-Win,可以直接到官网下载。然后下载Red hat server 6.9的安装镜像。
运行VirtuaBox,选择新建:
采用固定大小的硬盘空间,调试起来速度快,选择12G。
运行系统安装前,进行设置:
系统设置,取消软盘启动;
这里特别注意,这版VM virtual需要硬件加速,如果BIOS没有打开硬件加速,就无法运行虚拟系统安装。所以先要打开BIOS的虚拟硬件加速功能。具体位置有点忘了。
存储选项:光盘要把redhat安装镜像导入。
网络设置:采用桥接网卡。
共享文件夹:设置主机的共享目录,虚拟机系统可以访问到这个共享目录,两系统文件共享就非常方便。
启动安装,按照默认步骤进行安装。
3 设置red hat 系统
3.1 设置root
[root@alaolv ~]# su root
[root@alaolv ~]# passwd root
Changing password for user root.
New password:
BAD PASSWORD: it is too simplistic/systematic
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
重启后可以选择root登入。
3.2 安装共享文件的增强功能
我安装fedora workstion 32时,VM virtual的共享目录是直接可以用的,在fedora的media目录下面有个sf_multi_os_share的目录,就是主机共享的multi_os_share目录。但是在redhat6.9需要仔细安装增强功能。
首先:在virtual下点击增强功能。
然后:在redhat6.9的media目录下有VBox_GAs_6.1.14目录。
[root@alaolv media]# cd VBox_GAs_6.1.14/
[root@alaolv VBox_GAs_6.1.14]# LS
bash: LS: command not found
[root@alaolv VBox_GAs_6.1.14]# ls
AUTORUN.INF runasroot.sh VBoxSolarisAdditions.pkg
autorun.sh TRANS.TBL VBoxWindowsAdditions-amd64.exe
cert VBoxDarwinAdditions.pkg VBoxWindowsAdditions.exe
NT3x VBoxDarwinAdditionsUninstall.tool VBoxWindowsAdditions-x86.exe
OS2 VBoxLinuxAdditions.run
[root@alaolv VBox_GAs_6.1.14]# ./autorun.sh
自动安装好后,在目录就有sf_multi_os_share的目录。
[root@alaolv media]# ls
sf_multi_os_share VBox_GAs_6.1.14
将需要搭建ARM的linux系统的源码都拷入共享目录src:
[root@alaolv media]# cd sf_multi_os_share/
[root@alaolv sf_multi_os_share]# ls
image src
[root@alaolv sf_multi_os_share]# cd src
[root@alaolv src]# ls
apps_20100601.tar.bz2
busybox-1.16.0.tar.bz2
EABI-4.3.3_EmbedSky_20100610.tar.bz2
linux-2.6.30.4_20100531.tar.bz2
mjpg-streamer.tar.bz2
Qte_20100601.tar.bz2
qt-embedded-linux-opensource-src-4.5.0_20100601.tar.bz2
root_qt_4.5_2.6.30.4_20100601.tar.bz2
root_qtopia_2.2.0_2.6.30.4_20100601.tar.bz2
u-boot-1.1.6_20100601.tar.bz2
4 安装源码顺序
1、install_crosscomplie_20100410.exe
2、build_u-boot_20100410.exe
3、build_kernel_20100409.exe
4、build_busybox_20100410.exe
5、build_apps_20100410.exe
6、build_qtopia-2.2.0_20100413.exe
7、build_qt-4.5_20100413.exe
5 安装EABI
安装EABI(Ebeded Application Binary Interface) 是嵌入式ARM的交叉编译环境。先解压到工作目录/opt,命令:tar xvfj /media/sf_multi_os_share/src/EABI-4.3.3_EmbedSky_20100610.tar.bz2 -C/。进入/opt/EmbedSky/4.3.3/, 配置profile文件,命令:#gedit etc/profile。修改成如下:
执行命令:#source /etc/profile,使它生效。再使用命令:#arm-linux-gcc -v,来验证交叉编译器是否生效。
这样交叉编译器就安装成功了。
6 安装u-boot
现在这个编译还未通过,这个看起来不影响后续工作。我是直接编译linux内核到开发板。直接进入linux内核编译。
内容补充:linux烧入开发板整个过程中,必须要有u-boot作为前期引导,所以必须要安装的。所以在完成7 安装linux 2.6.30.4后,在安装u-boot发现顺利完成任务。原因应该是需要32的库文件。
进入/opt/EmbedSky,从共享文件u-boot源码解压缩。
# tar xvfj /media/sf_multi_os_share/src/u-boot-1.1.6_20100601.tar.bz2 -C/
# cd u-boot-1.1.6/
需要把LCD屏的参数3.5寸改为4.3寸,修改/opt/EmbedSky/u-boot-1.1.6/include/configs/EmbedSky.h
# gedit EmbedSky.h
修改#define LCD_TFT 参数 W35 修改为TFT48027如下:
在#define S35 1 //S35
#define W35 2 //W35=Q35
#define TFT240320 3 //T35
#define TFT480272 4 //W43 or Q43
#define VGA640480 5 //VGA 640*480
#define TFT800480 6 //A70
#define TFT800600 7 //A104
#define VGA1024768 8 //VGA 1024*768
#define LCD_TFT TFT480272
#if(LCD_TFT == W35)
#define CONFIG_EMBEDSKY_LCD_VBPD 12
#define CONFIG_EMBEDSKY_LCD_VFPD 4
#define CONFIG_EMBEDSKY_LCD_VSPW 5
#define CONFIG_EMBEDSKY_LCD_HBPD 21
#define CONFIG_EMBEDSKY_LCD_HFPD 32
#define CONFIG_EMBEDSKY_LCD_HSPW 44
#define CONFIG_EMBEDSKY_LCD_CLKVAL 6
执行命令:
# make EmbedSky_config
# make
编译顺利完成。
将编译好的u-boot.bin保存到共享目录中:
# cp -f u-boot.bin /media/sf_multi_os_share/image/u-boot_20200917.bin
7 安装linux 2.6.30.4
进入目录/opt/EmbedSky,解压命令:# tar xvfj /media/sf_multi_os_share/src/linux-2.6.30.4_20100531.tar.bz2 -C/,解压完成后进入/opt/EmbedSky/linux-2.6.30.4目录。这个内核代码是厂家修改过的,需要将开发板的信息拷贝到配置中,命令:cp -f config_EmbedSky_W43 .config,完成后进行编译,命令:make menuconfig,出现配置画面:
我理解本身可以在这个界面把开发板的信息配置起来,前面拷贝进去的内容是把需要配置的内容事先在配置文件中写入了,就不需要配置了。如果是一块新的ARM开发板,可以在此配置相关信息。
接下来就可以进行编译linux2.6.30.4的镜像,用于烧入开发板。命令:#make zImage。这个时候,发生编译没有通过,说缺少ld-linux.so.2文件。查资料需要安装32位的库文件,采用命令:#yum install glibc.i686, 操作系统告诉说没有安装yum工具。
先安装yum工具:
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
vi /etc/yum.repos.d/CentOS-Base.repo
(在 vi 命令模式下执行上述命令):
:%s/$releasever/6/g
:wq!
然后输入命令:
# yum clean all
# yum makecache
# yum update
yum update更新的过程时间比较长,可以试试不用update,只要yum工具可以用就行。
重新运行命令:#yum install glibc.i686,安装好32位库文件。
再重新运行:#make zImage,成功的编译了linux镜像文件zImage.bin。
将zImage.bin拷贝到共享目录:
# cp -f zImage.bin /media/sf_multi_os_share/image/zImage_W43_20200917.bin
通过BNW工具可以把系统镜像烧到开发板中。