Offical
httpss://www.yctek.com/
References
References
YC2440-SBC的nfs启动
昨天是了一下通过nfs来启动系统。我在普通用户下解压文件系统,并且设置了nfs。然后进入vivi设置启动参数如下:
param set linux_cmd_line “console=ttySAC0 root=/dev/nfs nfsroot=192.168.0.1:/home/nfs/s3c2440_recover ip=192.168.0.12:192.168.0.1:192.168.0.1:255.255.255.0::eth0:off”
然后输入boot来启动。结果在最后提示:
IP-Config: Complete:
device=eth0, addr=192.168.0.12, mask=255.255.255.0, gw=192.168.0.1,
host=192.168.0.12, domain=, nis-domain=(none),
bootserver=192.168.0.1, rootserver=192.168.0.1, rootpath=
Looking up port of RPC 100003/2 on 192.168.0.1
Looking up port of RPC 100005/1 on 192.168.0.1
VFS: Mounted root (nfs filesystem).
Freeing init memory: 176K
Warning: unable to open an initial console.
后来bbs上的版主告诉我要用root用户解压文件系统。我照着做了,果然能够启动了。
通过nfs启动系统就可以很容易测试自己的各种应用程序,以及qt是否编译成功。
嵌入式系统的重装
今天终于收到了2440的开发板。今天想弄明白如何烧录系统。收录了一些文章如下:
httpss://niuyi.21ic.org/user1/2177/archives/2006/20251.html
从三个星期前接到手上这个项目到今天,没有一刻不想着能首先复活SBC2410X开发板。因为对开发板是第一次接触,对在Linux下面的嵌入开发也是第一次接触。其中的许多概念没有一个鲜明的认识,如何交叉编译,怎样互相切换终端,minicom如何用,但关键的还是第一步,怎样让它先复活起来。目标一步步在接近中,虽然自己已在不断地完善各方面的条件,但接手这种二手活最烦的就是那些“接点”,也的确在这第一个“接点”处吃了个吓马威。板子系统的整个重装过程看起来很简单,就以下几步:
1: 用开发商附带的烧写FLASH工具,通过板子上的JTAG口和PC上的并行口将引导程序VIVI写入FLASH的头一个块(0 Block)。由于系统是从地址0x0000引导的,所以建议把VIVI写到此处。当然写到其它地方也可以顺利启动(试过,其原理应该是在0x0000处写入一跳转地址,所以可以顺利引导),但后续的工作,比如写入内核就不好安排了。 #Jflash-s3c2410 vivi /t=5 vivi:在Jflash-s3c2410命令同处的目录下,我的vivi文件名,也可以是其它名字 /t=5:表明我使用的是64M的三星Nand Flash。 输入回车后会产生相应提示,按提示进行。
2: 打开minicom(minicom提前要配置好,我这里也是按说明书进行的配置,但我查过许多产品的,这里的配置是一样的,应该是VIVI开发商统一了。115200 8N1 无硬件握手,还有一点请留心,就是minicom默认的是ttyS1(串口2),而我们的PC一般接的是ttyS0(串口1)) #minicom
3: 启动开发板,在启动同时按住空格,进入“vivi>”提示符后再松手。输入 #load flash vivi x 输入后立即按ctrl+a && s,选择xmodem,输入或选择要传输的文件(用上下方向键移动,用SPACE来选择,最好将文件拷到root目录下,当然也可以通过minicom的路径设置来改变默认打开的文件夹)。注:该动作一定要快,如果还提示“ACK :Get xxxx xxxx xx”,则是已经发生连接超时了。可以在vivi下使用param set xmodem_time_initout 2000000和param set xmodem_timeout 3000000来设置xmodem的初始化时间和等待超时时间就可以了。(也看过有的地方说要设param set xmodem 1,但实际发现该参数在目前的使用环境中不用重设,而且发现实际起关键作用的是xmodem_timeout,可以用param show来查看该参数的默认时间,好象整数表示的单位是us)
4:烧完后,用param set linux_cmd_line “console=ttyS0 root=/dev/nfs nfsroot=192.168.0.22:/NFS/share/Dir ip=192.168.0.32:192.168.0.1:192.168.0.1:255.255.255.0:matrix4.arm9.net:eth0:off” 设置启动参数(刚开始是通过NFS启动的系统)。其中nfsroot很好理解,它指的是你在局域网中的PC主机IP及NFS共享目录
ip的第一项是目标板的临时IP(不要与局域网内其它IP冲突),
第二项是boot server的IP(实际应用中发现好象没什么用)
第三项是目标板上的GW网关设置
第四项是掩码,
第五项是主机名,
第六项是网卡eth0,off的参数不知道是什么意思,但对整个启动应该没什么大的影响。
5:设置好后,用boot启动目标板,此处一定要注意PC主机的NFS目录可以加载,可以先自身加载一下,看看情况,另外,要注意关掉防火墙。
但以上各步中,每一步的小细节如果没有进行到都会不知所措。我就是这样。只能通过不断地上网再上网来寻求答案(一直很苦的就是这些事没有人指导,如果有些人做过了说一下,可以半个小时就搞定,我足足花了三天时间,才进行了上面的几步)
经过以上各步后,一般是没问题了(从网上其他人的实践经验中,感觉这几步许多人基本上没花什么功夫),但我的系统还是启动不了,总停在 Uncompressing Linux………………………………………………. done, booting the kernel. 这个问题我又找了两天。由于没有经验,我一直在找是不是以前的各步有没注意到的地方,是不是param set 中的IP设置有问题,所以不断的烧片子,加载kernel,设置参数。但实际的问题是我的PC主机(不是NFS的系统问题,我可以MOUNT),在刚加载完kernel后,重启了一下我的FC5,一切就好了。(我是在没办法后,打算切换我的FC5到WINXP去用超级终端重新加载kernel时,一切OK 的)。补:今天又碰到该问题,去掉了烧flash的JTAG线后,就一切OK
下面就要开始真正的编程了,又一座大山要翻!
httpss://blog.sina.com.cn/u/566aaf26010003a6
ARM9系统烧写(待编辑)
1。烧写vivi(windows下) 接好并行口 与 jtag口 线
a。开始菜单- 运行–输入 “cmd”打开命令提示符。
b。 输入 “e:” 回车 “cd \Jflash\Windows” 回车 。进入\Jflash\Windows目录
c。将要烧写的vivi镜像文件复制到e:\Jflash\Windows目录 ,设名为vivi-yaffs-v5
d。在命令提示符 中输入 “sjf2410 /f:vivi-yaffs-v5” 回车
e.你会看到选择菜单 [SJF Main Menu] 0:K9S1208 program 1:28F128J3A program 2:Memory Rd/Wr 3:Exit 选择0 回车
f.0 回车
g.0 回车
h.烧写完了,选择 3推出
2.烧写linux内核(windows下) 连接好主机与sbc2410的串口连线。
a.打开开始-附件-通讯-超级终端.新建连接,随便起个名字arm,确定.
b。连接时使用com1,确定。
c。每秒位数115200,数据位8,奇偶校验 无,停止位 1,流量控制 无,确定。
d。当所有的连接参数都设置好以后,打开目标板电源开关,就会看到 vivi 的启动信息,当 Linux 启动以后, 超级终端就相当于虚 拟终端,你就能通过它来操作目标板了。
e。按住空格键 ,重起sbc2410 ,便可以 进入vivi提示符 。
f.输入 load kernel x ,回车 。
g。选菜单中的传送,发送文件,选内核文件 kernel-yaffs-v5 ,选择 xmodem协议 , 发送。
h。发送完毕,内核已烧好。不过没有文件系统,这是重起sbc2410会提示找不到文件系统。
3。写linux文件系统(linux下)
a。重起电脑,进入 linux。
b。打开终端(主机上的,命令行输入的东西),输入”minicom”,回车。(若是第一次使用minicom则要配置一下,见 httpss://www.arm9.net/term_guide.asp#hypertrm)
c。按住空格键 ,重起sbc2410 ,便可以 进入vivi提示符 。
d。将下面文字复制到vivi提示符下,按回车。 param set linux_cmd_line “console=ttyS0 root=/dev/nfs nfsroot=192.168.0.1:/friendly-arm/root ip=192.168.0.69:192.168.0.1:192.168.0.1:255.255.255.0:matrix4.arm9.net:eth0:off” e。输入 para save,回车。
f。在开启一个终端(主机上的,命令行输入的东西),输入 ifconfig eth0 192.168.0.1 ,回车。(修改本地ip 为192.168.0.1)
g。输入 lokkit ,打开防火墙设置,选择 no firewall,ok.
h.输入 cd /mnt/cdrom/SBC-2410X/SBC-2410X-Linux 进入光盘目录。(必须插入了光盘)。
i。输入 cat exports>>/etc/exports
j.输入 /etc/init,d/nfs start 启动nfs服务。
k。关掉第二个终端,回到第一个进入vivi提示符的终端。
l。输入boot,sbc2410 将重起。
m。等提示“press enter to active the consle”时 按回车,进入提示符状态,此时已通过nfs成功启动系统。
n,输入bk6448 重新 烧写vivi 内核,使其支持640*480lcd显示
o。输入reboot,回车。
p。等一下,按住空格键,手动让sbc2410重起(按sbc2410版上的复位键。)
q。进入vivi提示符,重新执行d。e。两步。然后输入boot。
r。等一回,按回车,进入提示符状态,输入 bs6448 划分消协文件系统, 支持640*480lcd显示,且带有qtopia,leds 等例子程序。
s。按住空格键,重起sbc2410(按sbc2410版上的复位键。),进入vivi提示符。输入 para reset ,回车。para save ,回车。
t。输入boot,回车。
原文地址 httpss://www.xxx.com
QTE与触摸屏
QTE触摸屏加载有两种方法:
(1)QTE本身触摸屏加载;
主要注意三个内容:
- 编译QTE时,在其自定义配置文件(位于QTDIR/src/tools/qconfig-XXX.h,其XXX为自定义的名字,该特征字可以在configure时用-qconfig XXX指定)所应加的内容:
#define QT_QWS_IPAQ
#define QT_QWS_IPAQ_RAW
去掉鼠标自动识别功能 :#define QT_NO_QWS_MOUSE_AUTO
去掉不用的鼠标驱动,(在实际中,这一步可以不要,但对于缩减QTE的大小很有帮助),方法主要是在configure时设置配置参数为-no-mouse-pc -no-mouse-bus -no-mouse-yopy -no-mouse-vr41xx 。
以该编译好的QTE库为基础,编译应用程序;
- 在目标机上,要将触摸屏驱动链接好。在QTE3.0的版本中,如果定义了上述的两个IPAQ相关的宏,其默认打开设备文件/dev/h3600_tsraw。如果只定义QT_QWS_IPAQ,则打开设备文件为/dev/h3600_ts。
- 在目标机上,设定环境变量:QWS_MOUSE_PROTO=linuxtp:/dev/h3600_tsraw。
(2)使用tslib方法;
- 编译TSLIB1.3:
- 进行如下操作
-
-
- #./autogen.sh #生成configure文件
- CC= $ARM_TOOL_PATH/arm-linux-gcc
- CXX= $ARM_TOOL_PATH/arm-linux-g++
- ./configure –host=arm-linux –target=arm-linux –disable-inputapi –prefix=$PWD/build
- make
- make install
- 将build的整个目录拷贝到目标机,然后在目标机做如下设定,修改/etc/profile文件,在其中加入以下环境变量的设置
- export V_ROOT=/xxx/xxx/build #目标机上build所在的路径
- export TSLIB_TSEVENTTYPE=H3600 #设定类型为H3600,其主要是对着tslib中的设备结构体定义,该定义要与触摸屏驱动中的一致
- export TSLIB_CONSOLEDEVICE=none #设定控制台设备为none,否则默认为/dev/tty。在tslib1.3源码中,只要不是none,它就会打开$(TSLIB_CONSOLEDEVICE)1,默认的为/dev/tty1的设备,然后从中读取console的可用设置。这样可以避免出现“open consoledevice: No such file or directory KDSETMODE: Bad file descriptor”的错误
- export TSLIB_FBDEVICE=/dev/fb0 #指定帧缓冲设备
- export TSLIB_TSDEVICE=/dev/touchscreen/0raw #指定触摸屏设备节点文件
- export TSLIB_CALIBFILE=$V_ROOT/etc/pointercal #指定触摸屏校准文件pintercal的存放位置
- export TSLIB_CONFFILE=$V_ROOT/etc/ts.conf #指定TSLIB配置文件的位置
- export TSLIB_PLUGINDIR=$V_ROOT/share/ts/plugins #指定触摸屏插件所在路径
-
- 编译TSLIB1.4(TSLIB07072006)
- 进行如下操作:
- echo “ac_cv_func_malloc_0_nonnull=yes” > tslib/arm-linux.autogen #为了防止出现undefined reference to `rpl_malloc’ 错误
- CONFIG_SITE=arm-linux.autogen ./configure CC=arm-linux-gcc CXX=arm-linux-g++ –host=arm-s3c2410-linux-gnu –target=arm-s3c2410-linux-gnu –disable-input –disable-arctic2 –disable-mk712 –disable-collie –disable-corgi –disable-ucb1x00 –disable-linear-h2200 –with-gnu-ld –prefix=$PWD/build
- make
- make install
- 将build的整个目录拷贝到目标机,然后在目标机做如下设定,修改/etc/profile文件,在其中加入以下环境变量的设置。其解释类上,不同于TSLIB1.3的是,TLIB1.4通过配置文件ts.conf中module_raw h3600语句来加载对应的设备结构体定义。已废除了TSLIB_TSEVENTTYPE宏。
- export V_ROOT=/xxx/xxx/build
- export TSLIB_TSDEVICE=/dev/touchscreen/0raw
- export TSLIB_CALIBFILE=/etc/pointercal
- export TSLIB_CONFFILE=$V_ROOT/etc/ts.conf
- export TSLIB_PLUGINDIR=$V_ROOT/lib/ts
- export TSLIB_CONSOLEDEVICE=none
- export TSLIB_FBDEVICE=/dev/fb0
- 一个值得注意的问题是:TSLIB1.4在ts_config函数中通过while((p=fgets(buf,BUFF_SIZE,f))!=NULL)来加载ts.conf中的语句,而buf只有512byte。所以对于ts.conf没有用的定义语句,请将其删除,以防止误发生段错误。
- 进行如下操作:
- 以TSLIB库为基础,编译QTE。
- QTE2.3.10直接支持-tslib选项开关的应用。不用修改任何文件。可以通过网上所说的拷贝tslib.h头文件及库文件到QTE相关目录来进行编译(对于tslib1.4,还要拷贝tslib_private.h)。也可以在./configure进指定-L<path to tslib library> -I<path to tslib header>来防止出现找不到相应库文件 的错误。(对于tslib1.4,应该还加上-lts选项)。
- 对于其它版本的QTE,可以通过在QTE文件夹路径下执行grep -lir ‘tslib’ *来查看是否有对tslib的支持,如果没有则需要对源码进行相应的修改。(onebyte注:虽然网上说有补丁可下,但俺一直没找到相关的patch,但看看QTE2.3.10的源码后再做相应的修改还算比较方便:)
[onebyte后记]:
由于是一个人在做基于embedded linux的软件开发,没有他人直接的交流,所以摸索QTE触摸屏支持的过程是相当辛苦的!网上关于这一块的说法不一,使得自己对QTE触摸屏支持的方法很长时间辨不清方向。但在这里还是要非常感谢网上的许多朋友,正是通过大家的讨论才将这块内容逐渐理通。
在这里特将这些方法记载下来,送给同我一样经历过困惑的朋友们:P
[参考网站]
网上各论坛中关于TSLIB内容的帖子不少,这里只记一些主要的论坛网站,有兴趣的可以到这上面去看看:
[2] 华恒嵌入论坛
[4] QT Forum
利用busybox制作根文件系统
环境说明:
Host: rh9.0
Target: MC2410E
交叉编译器3.4.1 busybox1.01
1. 下载busybox: httpss://www.busybox.net/downloads/
2. 解压busybox
3. 进入到busybox目录后执行:
make menuconfig进行配置
注意: Shells >
Choose your default shell (ash) >
/* (X) ash 选中ash
在build option中选则Build shared libbusybox
其他配置可以参考已有的bin sbin中的内容 以及rcS文件中用到的命令,多配置几次就熟悉了!
make
make install
4. 上述操作之后在指定 的目录中就会生成
bin sbin 以及linuxrc文件
剩下来的最好是根据开发板提供的根文件系统进行改写linuxrc以及相关的配置文件。
断水刀的blog MC2410E 使用手记
修改 qt/qtopia 为 yaffs 文件格式
传输完成后,重启开发板
在 PC 机,超级终端下进入 vivi
12. 使用命令 part erase usr 擦除 usr 分区
13. 在 vivi 下使用命令 boot 进入 Linux
14. 进入 linux 后,使用命令 ifconfig eth0 192.168.0.15 255.255.255.0 up 配置开发板的 IP 地址并且启用网卡。
15. 进入到 /etc/tmp 目录下,使用命令 wget ftp://192.168.0.1/usr.yaffs.usbmouse 和wgetftp://192.168.0.1/mkyaffs 从 Windows PC主机下载这两个文件到开发板上。
16. 使用命令 chmod +x mkyaffs ,增加 mkyaffs 的可执行属性
17.使用命令 ./mkyaffs /dev/mtd/4 usr.yaffs.usbmouse 烧写文件(mtd 分区表序号从0 开始,usr 分区的序号为4)
原文地址 httpss://www.cublog.cn/u/24474/showart.php?id=212998