tiny4412裸机学习(一)准备工作

一、拷贝文件

在用户家目录下创建一个工作目录,用于存放测试代码和要用到的工具。

jw@pc:~$ mkdir w
jw@pc:~$ cd w

从windos将要用到的文件拷贝到虚拟机中的linux的工作目录 w 下:
交叉编译器[ arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz ]
友善制作的针对tiny4412的uboot[ uboot_tiny4412-20130729.tgz ]

二、安装交叉编译工具

将刚刚复制过来的交叉编译器[ arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz ]解压,放在当前工作目录即可。

解压后,将该工具链的位置,添加到环境变量PATH中去。

jw@pc:~/w$ tar -xzvf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz
jw@pc:~/w$ cd opt/
jw@pc:~/w/opt$ ls
FriendlyARM

修改PATH变量有2种形式

  • 一种是每次登陆系统时,在终端调用命令:
PATH=$PATH:~/w/opt/FriendlyARM/toolschain/4.5.1/bin/
  • 如果觉得每次都要设置一次PATH太麻烦,可以在终端的启动文件中加入该命令,在终端启动时会自动调用。使用该方式时,需要重启终端,才能生效。
vim   ~/.bashrc
在文末添加
PATH=$PATH:~/w/opt/FriendlyARM/toolschain/4.5.1/bin/

测试是否安装成功 终端输入arm-linux-gcc -v 可以列出交叉编译器信息就成功了。但是,提示找不到 arm-linux-gcc ,则可能缺少32位库:

sudo apt-get install lib32ncurses5 lib32z1

加装32位库后,可以打印gcc的相关信息

三、编译uboot

无脑操作一通,检查环境是否ok,先解压uboot,再编译。
由于是新装的系统,没有 make 程序,先安装make,再编译。

apt-get install make
jw@pc:~/w$ tar  -xzvf uboot_tiny4412-20130729.tgz
jw@pc:~/w$ cd  uboot_tiny4412
jw@pc:~/w/uboot_tiny4412$ make clean
jw@pc:~/w/uboot_tiny4412$ make tiny4412_config
make

还好,编译过程没出现什么问题。如果编译出错,可以执行 make clean 清理一下,再重新尝试一遍。

四、烧写uboot到内存卡

使用16GB以下的内存卡,因为要连接到虚拟机,内存卡直接插笔记本的内存口没法被虚拟机识别,所以使用了读卡器,插USB口。然后将内存卡连接到虚拟机上,在插入时就会提示要连接到哪个系统中。

使用linux系统中的fdisk命令,可以查看磁盘情况(fdisk是一个强大的磁盘管理工具)
由于是在虚拟机中,磁盘情况比较复杂,所以只看最后一个项目,就是内存卡的情况

jw@pc:~/w/uboot_tiny4412$ sudo fdisk -l
...
...


Disk /dev/sdb:7.4 GiB,7948206080 字节,15523840 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00000000

设备       启动   起点     末尾     扇区  大小 Id 类型
/dev/sdb1       309248 15523839 15214592  7.3G  b W95 FAT32

/dev/sdb 指的就是内存卡
/dev/sdb1 指的是内存卡里的分区1
而这里要烧写的是整个内存卡,而不是某个分区。因为本次uboot烧写需要在内存卡的固定位置烧写,所以会格式化内存,再烧写进去。

jw@pc:~/w/uboot_tiny4412/sd_fuse/tiny4412$ sudo ./sd_fusing.sh /dev/sdb
[sudo] jw 的密码: 
/dev/sdb reader is identified.
---------------------------------------
BL1 fusing
记录了16+0 的读入
记录了16+0 的写出
8192 bytes (8.2 kB, 8.0 KiB) copied, 0.145827 s, 56.2 kB/s
---------------------------------------
BL2 fusing
记录了28+0 的读入
记录了28+0 的写出
14336 bytes (14 kB, 14 KiB) copied, 0.258484 s, 55.5 kB/s
---------------------------------------
u-boot fusing
记录了540+1 的读入
记录了540+1 的写出
276932 bytes (277 kB, 270 KiB) copied, 2.26191 s, 122 kB/s
---------------------------------------
TrustZone S/W fusing
记录了184+0 的读入
记录了184+0 的写出
94208 bytes (94 kB, 92 KiB) copied, 0.85161 s, 111 kB/s
---------------------------------------
U-boot image is fused successfully.
Eject SD card and insert it again.

这样就烧写成功了。

五、验证uboot启动

要验证uboot能否启动,需要连接开发板的串口到计算上,在uboot启动时,会从串口发送出数据。

计算机与控制板使用串口线连接,由于笔记本没有串口,所以用了232转USB(坑爹的tiny4412的232串口不能使用普通串口线,还得使用交叉线)。

接好USB转232线,后可以在虚拟机的USB设备中找到:

jw@pc:~/w/uboot_tiny4412/sd_fuse/tiny4412$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 005: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 002 Device 004: ID 0e0f:0008 VMware, Inc. 
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

第二行显示的就是串口线了,它内部使用了PL2303芯片。

查看终端列表tty:
我的设备是ttyUSB0,好像不需要装驱动,第一次插入232转USB线就能识别出来了。

jw@pc:~$ dmesg|grep tty
[    0.111085] printk: console [tty0] enabled
[353951.942053] usb 2-3: pl2303 converter now attached to ttyUSB0

接好串口线,还得在linux系统上安装串口终端minicom,与开发板交互。
minicom的安装与配置

要使用 minicom ,通过命令打开:

jw@pc:~$ sudo minicom

Welcome to minicom 2.7.1

OPTIONS: I18n 
Compiled on Aug 13 2017, 15:25:34.
Port /dev/ttyUSB0, 22:24:34

Press CTRL-A Z for help on special keys

这个时候,把内存插进开发板,把sd卡旁边的开关拨到SDBOOT,意味着SD卡启动,然后打开电源,观察linux上的minicom的输出:

	OK
	??????只打印了1个ok????就没了????

经过一系列的百度,找到了一个新的uboot,适用于我的开发板,tiny4412ADK1312C增强版,解决uboot只打印ok的问题。免费下载。

然后可以看到一连串的打印信息。末尾提示没有找到内核镜像,说明uboot已经正常启动了。

OK

U-Boot 2010.12 (May 12 2020 - 23:03:44) for TINY4412


CPU:    S5PC220 [Samsung SOC on SMP Platform Base on ARM CortexA9]
        APLL = 1400MHz, MPLL = 800MHz

Board:  TINY4412
DRAM:   1023 MiB

vdd_arm: 1.2
vdd_int: 1.0
vdd_mif: 1.1
                                                                                
BL1 version:  N/A (TrustZone Enabled BSP)                                       
                                                                                
                                                                                
Checking Boot Mode ... SDMMC                                                    
REVISION: 1.1                                                                   
MMC Device 0: 7580 MB                                                           
MMC Device 1: 7456 MB                                                           
MMC Device 2: N/A                                                               
*** Warning - using default environment                                         
                                                                                
Net:    No ethernet found.                                                      
Hit any key to stop autoboot:  0                                                
reading kernel..device 0 Start 1057, Count 12288                                
MMC read: dev # 0, block # 1057, count 12288 ... 12288 blocks read: OK          
completed                                                                       
reading RFS..device 0 Count 13345, Start 2048                                   
MMC read: dev # 0, block # 13345, count 2048 ... 2048 blocks read: OK           
completed                                                                       
Wrong Image Format for bootm command                                            
ERROR: can't get kernel image!                                                  
TINY4412 # 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值