Linux裸机开发学习笔记(三)
韦东山裸机开发教程学习笔记
(使用arm开发板-S3C2440)
八、S3C2440开发板熟悉和体验
1、使用板子步骤
(1)接电源,按下开关
(2)使用串口(USB串口)观察信息
(3)使用JTAG口(烧写器)烧写程序
(4)如果板子上程序支持USB下载,板子的USB Device连接PC USB口
(5)启动选择开关—选择Nor 启动或者Nard启动
2、串口登录工具的使用
(1)点击MobeXterm的Session,在弹出页面点击Serial
(2)在Serial port选择对应的COM口,Speed设置115200
(3)设置Advanced Serial settings
3、JTAG烧写程序
(1)软件是oflash.exe,可以烧写所有的bin文件
a)v-boot.bin—可以烧写到Nor flash或Nard flash中,从0地址开始烧
b)led.bin等—只能烧到Nard flash,从0地址开始烧
(2)硬件是op/eop
4、JTAG口烧写裸板步骤
(1)eop连接pc机
(2)安装烧写器驱动
(3)安装OPEN JTAG app
(4)开发板连接eop
(5)切换程序所在盘幅,在命令提示符里面打开程序所在目录(cd 目录名),
(6)执行:oflash xxx.bin
(7)断开烧写器与开发板(排线有复位引脚)
(8)设定相应的启动,Nor或者Nard启动
(9)重新上电
5、eop常见问题
(1)未连接op/eop到电脑
(2)有其他程序在使用op/eop(同一时间只能有一个程序使用它)
(3)JTAG线未连接
(4)开发板未上电
(5)oflash xxx.bin时当前目录没有xxx.bin程序
(6)烧写完后没有正确设置启动开关
(7)烧写完后,op/eop与开发板之间的排线未断开,导致程序无法运行
6、使用uboot,通过USB下载,烧写bin文件
(1)使用op/eop把uboot.bin烧写程序到Nor-flash
(2)开发板设置为Nor启动,三秒内在串口登录软件按下空格,使板子进入uboot,而不是进入内核。
(3)用第二个USB串口线,连接PC和usb drive口,安装对应驱动
(4)在串口工具菜单中输入n,表示接受USB文件并烧写到NAND
(5)打开DNW软件,选择想烧写的bin文件,并发送
(6)uboot收到文件后,烧写到Nand flash
(5)断电,设置板子为Nard启动,重新上电后,运行Nard上烧写的程序
7、恢复出厂系统
(1)操作系统的启动过程
a)pc机:BIOS启动windows操作系统,windows识别挂载c盘,进而运行各种app
b)嵌入式Linux:bootloader(u-boot最广泛)启动Linux内核,内核挂载根文件系统(内含app)
c)PC机的BIOS,windows,c盘都在硬盘里面。
d)Linux的BootLoader,Linux内核,根文件系统在FLASH里
e)JZ2440有Nor flash(2Mb)和Nard flash(256Mb)
(2)恢复出厂系统
a)烧写u-boot到Nor flash或Nard flash(使用op/eop烧写),设置对应的Nor 或Nard 启动
b)上电后在串口登录工具立马输入空格,使板子进入u-boot,而不是启动板子的内核
c)连接pc到开发板的usb driver口,安装驱动
d)下载内核,在uboot串口菜单输入k
e)使用dnw软件发送uImage文件
f)uboot自动接收,烧写uImage文件
d)下载根文件系统,在uboot串口菜单输入y
e)使用dnw软件发送fs_qtopia.yaffs2文件
f)uboot自动接收,烧写根文件系统
d)输入q,退出串口菜单,执行删除参数分区命令nand erase params,使用默认参数
c)重启板子(并校准触摸屏),如果触摸不准,开机好在串口执行rm/etc/pointercal,然后重启
8、嵌入式开发的ping问题
(1)PC机使用网卡A来连接开发板,VMware就要使用同一个网卡A作为桥接
(2)设置三者IP处于同一网段
a)windows网卡A的IP
b)VMware里ubuntu的IP
c)开发板的IP(u-boot和Linux两种)
d)u-boot设置IP:set ipaddr xxx.xxx.xxx
e)Linux设置IP :if config ethv xxx.xxx.xxx
(3)注意
a)PC机上多网卡A、B不能设置同一网段
b)开发板烧写新的u-boot
9、裸机开发步骤
(1)X86平台、windos应用程序
a)建立工程
b)编辑代码
c)编译:VC6.0
d)运行
(2)x86平台、ubuntu应用程序
a)编辑
b)编译:gcc
c)运行
(3)ARM裸机开发
a)编辑源代码
b)编译:使用arm-linux-gcc(交叉编译模式)
c)烧写
d)运行
(4)gcc编译器:全称GNU编译套件,可以编译C语言、C++、Java等语言
a)使用gcc的原因:功能强大、稳定、开源免费
b)gcc -v 查看版本号,从而验证了gcc编译器的正常
c)使用格式gcc -o 输出文件 源文件(o是output的缩写)
(5)交叉编译
a)通常编译嵌入式程序的平台称为宿主机(PC机的ubuntu系统,CPU架构为X86)
b)运行嵌入式程序的平台称为目标机(如:某款ARM开发板,CPU架构为ARM架构)
c)在x86平台编辑并用编译器arm-linux-gcc编译ARM架构的程序
e)上述两者属于不同架构平台,从而属于交叉编译模式
f)再将程序烧写到ARM开发板中(下载方式:JTAG、USB、SD卡、网络等多种方式)
g)然后开发板运行该程序
10、编辑器和编译器
(1)推荐使用windows平台的source insight和notepad
a)source insight:查看代码、编辑代码等功能非常好用
(2)推荐使用arm-linux-gcc
a)arm-linux-gcc是基于linux平台的arm编译器,开源免费
b)功能强大、稳定、支持arm芯片众多、更新速度快
(3)入门误区:编译器使用ads、MDK
a)ads(停止更新)、MDK是windows平台的编译器,功能较弱
b)只适合于个人或者小团队的开发,不适合于中型、大型的协作开发
c)是收费软件
(4)source insight:c文件、h文件、arm汇编文件
(5)notepad:负责其他文件,如Makefile(理解为:指明了要编译哪些文件、指定汇编后的输出文件)
11、source insight介绍
(1)source insight是收费软件,但可以免费使用35天
(2)推荐版本:3.5
(3)安装包:百度安装source insight 3.5
(4)使用步骤
a)增加文件类型:options->documents options中,将c source file的设置为,*.c ;*.h ;*.S
b)新建项目(新建工程)project->new project,将相应文件添加该项目中
c)字体的设置(解决中文乱码):文档选项将字体该问宋体、常规、12,中文GB2312
d)使用alt +F12 调整字体的等宽
e)source insight的窗口:项目窗口、主窗口、符号窗口、上下文窗口
f)显示行号,view设置line number
g)快速切换行号:使用go to line跳转
h)高亮关键词:点击关键词,鼠标右键,高亮关键词
i)查看函数定义:点击函数,鼠标右键jump to defintion跳转过去(或者Ctrl+鼠标左键)
j)go back(alt+,)回到上一次光标所在位置,或使用工具栏左箭头
go forward(alt+.)回到下一次光标所在位置,后者右箭头
k)查找:search选择lookup reference(或用Ctrl+/)
或者点击查找的内容右击鼠标选择查找