以个人系统移植开发过程中遇到都问题为核心,流程步骤为次要的过程,将它们记录下来,感兴趣的小伙伴,可实操一下。
1.三个要求(折腾)
1.1.建议安装纯linux系统(双系统,安装到硬盘上)
建议linux发行版本:ubuntu,fedora
建议ubuntu版本要求:ubuntu-18.04/20.04/22.04(lts),64位,硬盘分区至少100GB
百度搜索:u盘安装ubuntu
友情提示:安装之前备份重要的资料
1.2.建议安装必要的开发软件
1)linux系统安装软件的方法:两种
网络安装:自动检查软件之间的依赖关系并且将没有安装的依赖软件自动帮你安装完毕
ubuntu网络安装命令:sudo apt-get install 软件名
fedora网络安装命令:sudo yum install 软件名
本地安装:手动下载安装的软件包,然后利用安装命令安装即可,但是不会帮你安装依赖文件
ubuntu本地安装名:sudo dpkg -i 软件包名.deb
fedora本地安装命令:sudo rpm -i 软件包名.rpm
建议:采用网络安装方式
2)嵌入式开发必要的开发软件,以ubuntu网络安装为例:
sudo apt-get install vim
注意还需要配置vim,添加对应的配置文件.vimrc和插件.vim
可以参考(达内)虚拟机的配置文件和插件:
/home/tarena/.vimrc 拷走
/home/tarena/.vim 拷走
有空玩玩:vimplus
sudo apt-get install tftpd-hpa //网络文件传输服务
注意还需要添加修改对应的配置文件,后续课程详解
sudo apt-get install nfs-kernel-server //NFS网络服务
注意还需要添加修改对应的配置文件,后续课程详解
sudo apt-get install ckermit //linux系统下的串口工具
sudo apt-get install ctags //源码阅读工具
1.3.每天半小时笔试题:题库:MS.rar
****************************************************************************
一.实战演练:
目标:
1.先向下位机的EMMC烧写一个uboot
因为EMMC掉电数据不丢失还有TF卡不稳定,万一哪天消失不见了,uboot也会消失不见
2.利用EMMC上的uboot向下位机的内存下载一个led.bin开关灯程序并且运行:
通过uboot自带的tftp命令通过网络下载
通过uboot自带的loadx命令通过串口下载
具体实施步骤如下:
上位机实施步骤:
1.首先将X6818开发板的三根线连接起来
电源线
网线:网线一头接电脑网口,一头接开发板网口
如果电脑没有网口的,可以购买USB转网口
USB转串口线:串口连接到开发板的UART0位置上,USB口连接到电脑上
2.在上位机将uboot烧写到TF卡中
1)获取烧写软件:IROM_Fusing_ToolV2.0.zip压缩包(位于porting_resource.rar/uboot焼写工具)
解压缩得到:IROM_Fusing_Tool.exe
2)准备一个TF卡和读卡器(TF卡转USB口的转换器)
将TF卡插入到读卡器上,然后将读卡器再插入到上位机的USB口
3)运行烧写程序:IROM_Fusing_Tool.exe(右击以管理员的身份运行)
4)利用IROM_Fusing_Tool.exe烧写uboot可执行文件ubootpak.bin到TF卡上的步骤:
->点击:Browse,选择目标文件ubootpak.bin->点击打开
->点击:Add
->点击:START,将ubootpak.bin烧写到TF卡上
->出现:Fusing Image done ->烧写成功
注意ubootpak.bin位于:porting_resource.rar/fastboot/ubootpak.bin
3.上位机安装串口工具-SecureCRT,上位机首先安装USB转串口的驱动
如果是厂家送的USB转串口,无需安装驱动,STM32单片机的串口驱动和它通用
如果是自己单独购买的USB转串口需要安装驱动,安装过程如下:
1)连接上USB转串口线:
右击此电脑->管理->设备管理器:
USB-serial controller D->识别USB转串口线->无法识别->没有该驱动
右击选中:USB-serial controller D->属性
2)安装腾讯管家->软件管理->驱动人生,安装好后,自动扫描下载USB转串口驱动或者跟USB转串口卖家索要windows系统的驱动
3)安装USB转串口驱动之后会识别USB转串口线,查看如下:
设备管理器:
端口(COM 和 LPT):
Prolific USB-to-SERIAL Comm Port(COM4)
...CH340(COM7)
4)获取串口工具
porting_resource.rar/串口工具/SecureCRT压缩包
解压缩得到:SecureCRT文件夹
注意:该文件夹路径必须英文路径,不可以有中文
进入到文件夹中
选中:SecureCRT.exe 双击运行
右击->放送到->桌面快捷方式
5)配置串口工具
双击SecureCRT.exe->出现连接对话框->关闭
文件-快速连接->对话框,在此对话框中选择配置信息:
协议:Serial(串行)
端口:COM4(根据自己的comN)
计算机->右击->管理->设备管理器->COM and LPT->COMX
波特率:115200
发送数据速率:115200 bps(bit per second)
数据位:8
奇偶校验:None
停止位:1
将"RTS/CTS"的√划掉
点击连接
左上角有√(绿色),连接成功了,此时静静等待着下位机uboot软件运行的打印信息
如果关闭了,以后再次打开不用重新配置,只需选择之前配置的结果使用即可
SecureCRT字体的配置:
选项->会话选项->外观->字体->选择自己喜欢的字体和字体大小
4.向下位机的EMMC安装uboot软件
4.1.将已经烧写uboot的TF卡插入到X6818开发板的SD0卡槽中
4.2.开发板有一个复位键,RESET键->整个开发板复位
按下复位键(首先运行TF卡中的uboot)
此时SecureCRT软件上会有一大串打印信息内容,这就是uboot程序的运行信息->此时uboot会有一个3,2,1,0倒计时
在倒计时到期之前->按下上位机键盘的回车键(或者空格)中断倒计时进入到下位机uboot的命令行(tarena#)
恭喜你:至此下位机的TF卡上的uboot就成功的运行启动了!
4.3利用tftp网络服务更新烧写uboot到emmc
1)用网线连接上位机和下位机,然后明确上位机作为服务器,下位机作为客户端
上位机要实现文件的传输下载,必须要安装
tftpd-hpa网络服务,安装tftpd-hpa服务的实施步骤:
1.安装
如果是自己安装的linux系统,安装tftpd-hpa文件传输
服务命令:
sudo apt-get install tftpd-hpa
如果使用tarena虚拟机,tftpd-hpa已经帮你安装完毕
2.配置tftpd-hpa网络服务,关键指定文件传输共享目录路径
sudo vim /etc/default/tftpd-hpa 打开此文件
将TFTP_DIRECTORY修改为如下:
TFTP_DIRECTORY="/tftpboot" //说明只要将来将编译
好的二进制文件拷贝到/tftpboot目录下,将来下位机
就会自动从这个目录下寻找要下载的二进制文件
创建一个共享目录:
sudo mkdir /tftpboot 创建共享目录
sudo chown tarena /tftpboot -R 将/tftpboot目录的用户改为tarena用户
sudo chgrp tarena /tftpboot -R 将/tftpboot目录的组改为tarena组
3.配置完毕,重启tftpd-hpa网络服务
sudo service tftpd-hpa restart
4.给上位机linux系统配置添加一个静态IP地址
切记:此ip地址一定要和下位机的ip地址
在同一个网段
实施步骤:
虚拟机右上方(扇形或者上下箭头)->
点击右键->删除之前的配置信息->
添加->连接名称:TPAD,点击IPV4设置->
方法:手动->添加->输入IP地址,掩码,网关
IP地址:192.168.1.8
掩码:255.255.255.0
网关:192.168.1.1
->最后点击保存
如果是纯ubuntu系统,做到这就可以了!
5.如果是虚拟机,还需要设置虚拟机的网络连接方式为桥接:
虚拟机->设置->网络适配器->看右侧
选中桥接方式->保存确定
6. 如果是虚拟机,还需要指定桥接的网卡,步骤:
点击虚拟机软件左上角的"编辑"->虚拟网络编辑器->更改设置->桥接模式:已桥接至:在这个对话框中选择自己的有线网卡
一般都叫"xxxx Ethernet Controller"或者"xxxx Family Controller"或者"...USB ...Adapter"->应用->确定
至此上位机开发所要做的工作完成!
2)上位机搞定以后,继续解决下位机:下位机利用TF卡上的uboot向下位机的EMMC烧写一个ubootpak.bin:
重启开发板,3秒以内按上位机任意键中断倒计时进入uboot命令行模式,执行以下命令:
print //打印uboot环境变量的命令
此时一定查看重要的两个环境变量:
ipaddr=192.168.1.165 //此乃开发板的IP地址
serverip=192.168.1.164 //此乃上位机的IP地址
setenv serverip 192.168.1.8 //setenv用来设置uboot环境变量的命令:setenv 环境变量名 新值
设置服务器的IP地址为192.168.1.8
saveenv
保存设置的IP地址信息到EMMC
print //再次确保环境变量是对滴!
ping 192.168.1.8 //下位机ping上位机
如果出现is not alive:表示失败,继续ping一下,第一次总是不成功的
如果出现is alive:表示成功,继续后续网络下载操作
将下载的uboot可执行文件ubootpak.bin从windows系统下复制到linux虚拟机的/tftpboot共享目录下
此文件位于porting_resource.rar/fastboot/ubootpak.bin
然后继续在uboot命令行执行:
tftp 0x48000000 ubootpak.bin
将上位机的ubootpak.bin文件下载到下位机的
内存0x48000000地址处
记住:只要将来出现"'Permission denied' (0)"错误,就是文件读写权限不够,只给拉满权限:
上位机执行: chmod 777 /tftpboot/*
然后继续在下位机uboot命令行执行:
update_mmc 2 2ndboot 0x48000000 0x200 0x78000
说明:
update_mmc:专门用于将内存中的uboot烧写到emmc闪存上的一个命令
2:注意TF卡,SD卡和EMMC他们统称MMC,硬件操作协议都是一模一样,指示物理尺寸大小不一样而已
如果第一个参数传递0:表示向SD0卡的TF烧写uboot
如果第一个参数传递1:表示向SD1卡的TF烧写uboot
如果第一个参数传递2:表示向EMMC的TF烧写uboot
2ndboot:表示uboot所在的EMMC区域的分区名
0x48000000:uboot所在的内存地址----0x48000000:要烧写的文件在内存的存储起始地址
0x200:注意EMMC闪存内部的存储地址编址从0开始
三星规定,如果采用S5P6818处理器,必须将uboot烧写到EMMC的512(0x200)字节开始的地方----三星要求必须烧写到EMMC的0x200。也就是CPU上电,自动到EMMC的0x200找uboot运行
0x78000:指定烧写的uboot文件大小
如果是利用TF卡烧写,将SD0卡槽的TF拔掉,按复位键重启或者执行reset命令复位开发板
再次观察SecureCRT是否有新的uboot打印信息
3)开发板运行一个led.bin,实现开关灯操作
led.bin位于porting_resource.rar/fastboot/led.bin
将led.bin从windows系统下复制到linux虚拟机的/tftpboot共享目录下
重启开发板,进入uboot的命令行模式,执行:
print //确保serverip和ipaddr正确并且在同一个网段
ping 192.168.1.8 //确保网络是联通的
tftp 0x48000000 led.bin
将led.bin从上位机下载到下位机的0x48000000内存处
go 0x48000000 让CPU跑到内存的0x48000000地址去运行
led.bin
观察开发板上有一个灯狂闪烁!
注意:如果下载提示"T T T ...",建议重启虚拟机的
tftpd-hpa网络服务:
sudo service tftpd-hpa restart
还要注意上位机IP地址一定要对!
4)利用EMMC上的uboot,利用串口下载运行可执行程序led.bin到下位机的内存中并且运行
此文件位于:porting_resource/fastboot/led.bin
重启下位机,在SecureCRT上进入到下位机uboot命令行:
loadx 0x48000000 //此时卡住不动
然后立刻,不要停留,点击SecureCRT软件:传输->发送 XModem(N)->选中要下载的文件(led.bin),等会一会儿
结果:下载led.bin到下位机内存的0x48000000上
下载完毕继续执行以下命令:
go 0x48000000