一、连接[开发板-win10-虚拟机]
1、播放虚拟机VMware的ubuntu 16.04,设置win10和 虚拟机处于同一网段
>>>ipconfig
>>>ifconfig
2、将win10防火墙关闭,否则无法访问WIN10网络
3、使用cmd命令行ping虚拟机的IP
4、同时可以使用虚拟机(或使用远程登录工具(MobaXtermPersonal 、FinalShell、SecureCRT)登录虚拟机)ping win10的IP;
5、嵌入式开板利用网线连接到笔记本的有线网口。
6、设置有线网口的IP地址和嵌入式开发板的IP地址处于同一网段。
设置命令:
print //答应开发板的参数set ipaddr 192.168.0.2 //设置开发板IPset serverip 192.168.0.1 //设置电脑端IPsave //保存参数
7、可以通过串口工具和嵌入式开发板串口通信,可以ping通开发板:
8、通过FTP传输文件。
出现的问题:
如果远程登陆有错误:
一方面是双方ping不通,主机和虚拟机不在同一个网段,设置到同一网段即可。
另一方面是如果双方可以ping通,但无法登录,先看主机和虚拟机的网络是否勾选桥接网络:
再使用命令ps –e|grep ssh检查虚拟机端是否安装openssh-server,或者安装ssh时出现如下问题:
说明没有安装依赖项openssh-client=1:7.2p2-4
执行命令:sudo apt-get install openssh-client=1:7.2p2-4
之后执行:sudo apt-get install openssh-server
查询命令:ps –e|grep ssh
启动服务:service ssh start
停止服务:service ssh stop
重启服务:service ssh restart
二、编码[win10(编辑)->虚拟机(编译、调试、烧写)->开发板(运行)]
1、GCC编译器
2、Makefile:
- Windows上编辑[sourceinsight]代码
- 通过传输工具 传输到虚拟机进行编译[gcc –o name hello.c]和调试[./name],其中3、编译和调试的命令可以放在makefile脚本中统一执行
- Makefile 规则:
makefile执行条件:目标不存在、依赖已更新(1、没有hello 2、hello.c或a.c被修改)
- 格式1:
目标:依赖1 依赖2
hello:hello.c a.c …
[TAB] gcc –o hello hello.c a.c …
格式2:-c”编译不链接”
hello:hello.o a.o …
[TAB] gcc –o hello hello.o a.o …
hello.o:hello.c
[TAB] gcc –o hello.o -c hello.c
a.o:a.c
[TAB] gcc –o a.o -c a.c
- 在当前目录下执行命令make即可。
3、关于安装交叉编译器:
rz
sudo apt-get install lrzsz
win传输文件到虚拟机:arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2
sudo mkdir –p /usr/local/arm //创建目录
sudo tar jxvf arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2 –C/usr/local/arm//解压 并复制到刚创建的目录下
cd /usr/local/arm //切换目录
sudo mv gcc-3.4.5-glibc-2.3.6/ 3.4.5 //移动文件
cd 3.4.5/bin/
pwd #复制当前目录
sudo vi /etc/environment //编辑修改环境变量
按照格式 粘贴刚复制的目录
source /etc/environment //
sudo apt-get install lib32ncurses5 lib32z1
sudo apt-get install lib32stdc++6
arm-linux-gcc –v //查询版本
三、u-boot打补丁
u-boot:打补丁
1、将system文件夹中的下面这两个上传到虚拟机的ubuntu端system文件夹下
执行解压命令:tar xjf u-boot-1.1.6_jz2440.tar.bz2
2、打补丁
进入解压出来的u-boot-1.1.6目录:cd u-boot-1.1.6/
执行打补丁命令:patch -p1 < …/u-boot-1.1.6_jz2440.patch
3、切换目录到system目录下:cd …
将打好的补丁文件进行压缩:tar cjf u-boot-1.1.6_jz2440.tar.bz2 u-boot-1.1.6
4、上传到windows端解压后可以通过Source Insight阅读源码
5、在解压出来的u-boot-1.1.6目录下配置文件:make 100ask24x0_config
6、编译源码:make
7、完成后会生成一个u-boot.bin的文件,上传到windows端,可以通过oflash下载烧写到开发板。
四、内核打补丁
1、将system文件夹中的下面这两个上传到虚拟机的ubuntu端system文件夹下
执行解压命令:tar xjf linux-2.6.22.6.tar.bz2
2、打补丁,进入linux-2.6.22.6目录执行命令patch -p1 < …/linux-2.6.22.6_jz2440_v2v3.patch
3、切换目录到linux-2.6.22.6目录下ls会看到 这个文件;
4、在system目录下将打好的补丁文件进行压缩方便以后使用:
tar cjf linux-2.6.22.6_jz2440.tar.bz2 linux-2.6.22.6
5、上传到windows端解压后可以通过Source Insight阅读源码
6、cp config_ok .config
7、make uImage
8、编译完 会生成一个image的文件,上传到windows端,可以通过oflash下载烧写到开发板
五、制作根文件系统
自己写bootloader:
NOR flash 启动:把NOR Flash上的代码复制到SD RAM 的链接地址后,从0地址(NOR Flash 0地址处[可读不可写])开始执行。
NAND Flash 启动:上电时,会自动的把NAND Flash上的前4K复制到2440内部的0地址开始的4K RAM,然后从0地址(片内的内存[可读可写])开始执行。缺陷:位反转 需校验
NOR FLASH、NAND FLASH、SDRAM三者关系
简单的u-boot编写步骤:启动内核
① 初始化硬件:关看门狗、设置时钟、设置SDRAM、初始化NAND FLASH
② 如果BootLoader比较大,要把他重定位到SDRAM
③ 从NAND FLASH上把内核读入SDRAM内存(1:读flash:2:初始化内存/时钟/其他)
④ 设置要传给内核的参数
⑤ 启动(1:[0X30000100]设置启动参数TAG 2:跳到入口地址去执行)
改进方法:启动ICACHE或DCACHE
uImage = 头部+ 真正的内核
举报