基于Exynos4412搭建linux环境

  • 硬件平台:友善之臂Exynos4412
  • 系统:linux-3.5-20160514
  • 编译器:arm-linux-gcc-4.5.1
  • 虚拟机:centos7 64位
  • 虚拟机平台:vmware16

参考:tiny4412学习(一)之从零搭建linux系统(烧写uboot、内核进emmc+uboot启动内核)_tiny4412 uboot 启动 参数_【星星之火】的博客-优快云博客

1、安装交叉编译环境

arm-linux-gcc-4.5.1链接:

 https://pan.baidu.com/s/1kQKCmHKKY0pyTh7PTNs1eg?pwd=nj4p 提取码: nj4p

(1)解压编译器源码

tar -xvf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz -C /

 执行后将把 arm-linux-gcc 安装到/opt/FriendlyARM/toolschain/4.5.1 目录。

(2) 在usr/local/目录下创建arm文件夹,并将解压缩的文件夹/opt/FriendlyARM/toolschain/4.5.1/拷贝到/usr/local/arm/目录:

mkdir /usr/local/arm

cp opt/FriendlyARM/toolschain/4.5.1/ /usr/local/arm/ -rf 

3)修改环境变量:

vim ~/.bashrc 

在其中添加

export PATH=/usr/local/arm/4.5.1/bin/:$PATH

(4)安装链接库

如果是centos7: yum install xulrunner.i686

如果是ubuntu:apt-get install lib32z1

如果是32位的机子,则不需要第四步,如果是64位的机子,则必须进行第四步

 (5)重启虚拟机使之生效或者刷新环境

reboot

或者source ~/.bashrc

 使配置文件生效。

(6) 检测交叉编译环境是否安装成功:

arm-linux-gcc -v  

 

 如果出来这样的字样,则说明成功。

2、编译内核

linux-3.5-20160514链接:

https://pan.baidu.com/s/1_t7e80_J_9pkjPUaOHRlDg?pwd=78i7 提取码: 78i7

(1)解压

解压 Linux  内核源代码

tar xvzf  linux-3.5-20160514.tgz

cd  linux-3.5

 2)配置

cp  tiny4412_linux_defconfig  .config

make menuconfig

如果make menuconfig后,出现以下结果

* Unable to find the ncurses libraries or the
* required header files.
* ‘make menuconfig’ requires the ncurses libraries.
* Install ncurses (ncurses-devel) and try again.
make[1]: * [scripts/kconfig/dochecklxdialog] Error 1
make: * [menuconfig] Error 2

 解决方法很简单,安装ncurses库即可

yum install -y  ncurses-devel

执行make menuconfig时终端窗口必须大于19列80行

  • 编译Tiny4412提供的内核的时候,需要先将内核的TrustZone关闭,否则无法正常启动内核。

位置在System Type  ---->中的

取消选择Support TrustZone-enabled Trusted Execution Environment

 键盘上空格按键可以选择,esc可以退出

3)编译 

make

 最后在 arch/arm/boot 目录下生成 zImage,则说明编译成功

编译的时候比较长,所以需要等待几分钟

 3、制作根文件系统----本部分没有采用。该部分采用光盘提供的文件ramdisk-u.imgrootfs_qtopia_qt4.img

ramdisk-u.img链接:

https://pan.baidu.com/s/1vwUDBVFRlJlJ3iBWRAn00A?pwd=fjty 提取码: fjty 

rootfs_qtopia_qt4.img链接:

https://pan.baidu.com/s/1YbR4EcsaqLjJ3p4qWSfvgA?pwd=zptb 提取码: zptb

4、编译uboot

uboot_tiny4412链接:

https://pan.baidu.com/s/10bWFvx-ljEXMffMEqSQhhg?pwd=ryp7 提取码: ryp7

(1)解压:

unzip uboot_tiny4412_new.zip

 (2)编译

cd uboot_tiny4412-master

make tiny4412_config

make

如果是以下图片中的,则说明编译成功

 

 编译 用于生成bl2 的工具

cd sd_fuse

make 

 假设SD卡已被PC Linux识别为/dev/sdb, 以root用户运行以下命令即可:

cd sd_fuse/tiny4412

./sd_fusing.sh  /dev/sdb

 如果在./sd_fusing.sh  /dev/sdb这一步的时候报错

 我们需要改一下sd_fusing.sh 文件

vim sd_fusing.sh

 出现以下图片中的则说明烧录成功

接下来就是如何下载,并启动内核,挂接文件系统了。

 5、下载ubootemmc

1)之前我们已经将uboot下载到SD卡,现在从SD卡启动uboot,可以看到如下信息:

2)查看设备的分区表信息

以下操作在串口调试助手

SecureCRT链接:

https://wwbz.lanzoue.com/inEKQ0urande 密码:e94t

参考一下链接进行破解:https://www.cnblogs.com/qlgj/p/13960699.html

putty链接:

https://pan.baidu.com/s/1Mq9l5Uwh862R8mUTQsk2-g?pwd=wn2x 提取码: wn2x 

fdisk -p 0

fdisk -p 1

 

设备mmc1的分区信息,即eMMC分析,注意这个是superboot分区信息,我们就用这个分区。

分区1 FAE分区, 分区2 是给system的,分区3user-data, 分区4 cache.

3)格式化eMMC

u-boot模式下输入如下指令来格式化eMMC设备。

fdisk -c 1 320 2057 520

执行后会返回分区信息,继续格式话分区123,4
 

 fatformat mmc 1:1

 这句话意思是对mmc 1设备的第一分区格式作fat格式化。

ext3format mmc 1:2
ext3format mmc 1:3
ext3format mmc 1:4
 

上面三个指令是分别对eMMC的分区2,3,4ext3格式化。
到此我们完成了对eMMC的设备的格式化。 

4)如果提示如下错误: 

 Error: No MBR is found at SD/MMC.                                            
Hint: use fdisk command to make partitions.

则先执行指令"fdisk -c 0",执行过程如下: 

fdisk -c 0  

fdisk is completed

对emmc初始化后,我们开始使用dnw来下载uboot到emmc中。现在我们就需要装一下linux的dnw工具,注意dnw是下载到内存,把固件数据缓存起来,然后烧录到eMMC中 

6、LinuxDNW工具安装: 

dnw链接:

https://wwbz.lanzoue.com/iGCL80ur0haf  密码:bd45

(1)解压缩文件

tar xvf dnw-linux.tar.gz

(2)修改文件

 cd dnw-linux/

cd src/

cd driver/

vim Makefile

 

vim secbulk.c

 

 (3)编译文件

cd ../..

ls

make 

 

出现上面那样就是编译成功。

 (4)加载模块到Linux内核:

sudo insmod ./secbulk.ko        (注意如果在root登录权限下,sudo命令不需要,以下同)

dmesg        (查看是否加载成功)
        secbulk:secbulk loaded

        usbcore:registered new interface driversecbulk        (看到这样两行就说明成功了)

开机的时候不会自动加载.ko文件,这样每次都要先加载才可以使用,此时将其加入开机脚本,
使其得到自动加载,编辑/etc/init.d/rc.local 在最后加上 insmod /所在路径/secbulk.ko

(5) 将dnw文件copy/usr/local/bin目录
 

 cd src/dnw/

ls

cp dnw /usr/local/bin

 则输入dnw出现以下说明安装成功

 

 (6)DNW下载好了,我们可以把uboot下载到emmc了。

以下操作#uboot是在串口助手里执行,#虚拟机是在centos7里执行

 千万别忘了先打开保存!!!

#uboot:emmc open 1

 上面提示emmc开启成功,注意说明,emmc一旦打开,需要连续烧录,烧录完成后可以关闭emmc

#uboot:dnw 40000000

提示:OTG cable Connected!

Now, Waiting forDNW to transmit data(等待DNW下载)

注意虚拟机里面有一根usb线跳出来需要连接到虚拟机

打开虚拟机,进入uboot所在目录 

cd /uboot_tiny4412-master

#虚拟机:dnw -a 40000000  sd_fuse/tiny4412/E4412_N.bl1.bin 

此时u-boot中断会提示传送校验完成,此时已经把bl1.bin通过USB传送到了memeory的0x40000000起始地址,大小8KB. 

接下来我们烧录bl1.bin到eMMC中,u-boot下继续输入:

#uboot:mmc write 1 0x40000000 0 0x10

会提示写入信息,说明已经写入成功。这个是把刚才从PC端通过dnw下载下来的bl1.bin固件下载到emmc中,起始0, 16个block, 一个block是512B, 16*512=8*1024=8KB. 这个是bl1.bin的存放位置。

以此类推,烧录bl2.bin. u-boot.bin, tzsw.bin

#uboot:dnw 40000000

#虚拟机:dnw -a 40000000  sd_fuse/tiny4412/bl2.bin

#uboot:mmc write 1 0x40000000 0x10 0x1C

 #ubootdnw 40000000

#虚拟机:dnw -a 40000000  u-boot.bin

#ubootmmc write 1 0x40000000 0x30 0x21D

#ubootdnw 40000000

#虚拟机:dnw -a 40000000  sd_fuse/tiny4412/E4412_tzsw.bin

#ubootmmc write 1 0x40000000 0x2c0 0xB8

启动分区到此全部写入完成,注意一定要关闭emmc
u-boot下继续输入:
 

#uboot:emmc close 1

提示:eMMC CLOSE Success.!! 

 现在uboot已经完整的烧入到emmc,我们可以将开关波动到NAND一侧,从emmc启动,发现uboot输出已经变成了:

 7、下载内核到emmc

fastboot链接:fastboot.rar - 蓝奏云

这里下载的东西跟第三步制作根文件系统那下载的是一样的,如果上面下载了,此处不需要下载

ramdisk-u.img链接:

https://pan.baidu.com/s/13S-KeInDsutRR5Zh0hudUA?pwd=5gqv 提取码: 5gqv 

rootfs_qtopia_qt4.img链接:

https://pan.baidu.com/s/1gMcVZr588u5qBI14I1OCUA?pwd=pt7a 提取码: pt7a

zImage在linux-3.5/arch/arm/boot/目录下

 通过共享的软件将zImage分享到你的windows中,推荐使用共享文件夹(samba服务器等),或者软件xftp等等

内核下载我们采用fastboot下载,uboot已经支持了fastboot。

安装windows下fastboot工具

下载我们进入uboot,执行fastboot,并将单板的usb接到PC。提示如下:

 windows下cmd进入fastboot.exe所在目录

zImage,ramdisk-u.img,rootfs_qtopia_qt4.img 复制粘贴到fastboot目录下

然后再cmd窗口输入以下几步

fastboot flash kernel zImage

fastboot flash ramdisk ramdisk-u.img

fastboot flash fat rootfs_qtopia_qt4.img

fastboot reboot 

如果在输入时出现wait...时, 则需要下载驱动精灵升级Android,进入驱动精灵的驱动管理时,第一个就是Android,升级即可成功

驱动精灵:驱动精灵_驱动更全、匹配更准、下载更快!

 此时,我们已经将uboot、内核下载到单板中。

开发板屏幕出现以下图片:

 

 并且串口助手出现以下图片

 则说明成功。

8、ftp传输的搭建

设备连接:

         交叉网线

         串口线

         usb线

         电源线

 (1)查看开发板的ip地址

 (2)打开电脑的控制面板

 

 

 查看是否有以太网:

 

 

 

 

 保存退出。

进入vmware

 

 

 确定保存退出。

然后在虚拟机里面输入  ftp 开发板的ip

 连接需要差不多一分钟吧,耐心等待。

 连接成功进行用户名及密码的输入

 

 在串口调试助手上面可以看到

 注:传过去的文件都需要赋权限,图中的 chmod命令为:chmod  777 test才能执行

因此,在进行linux驱动程序开发过程中,当主机完成驱动程序模块ko文件的编译后,可以通过FTP的方式将文件下载到实验板中进行调试验证。

再进行传输的时候也可以通过U盘,nfs等方式,如果ftp建立连接不了,试一试其他方式。

现在搭建环境的工作已经做完了,希望可以帮助到大家!!!

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

&Puppet&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值