项目管理者联盟 | 中国工程管理网 | 中国研发管理网   会员中心 资料库 博客 圈子

PMI-ACP®认证

适合敏捷开发项目
敏捷项目管理最佳实践

网络课程

PMI-PBA®认证

重视项目商业分析
商业价值与需求分析能力

网络课程

NPDP®认证

产品管理国际认证
全球产品管理最佳实践

网络课

PMP®认证

单项目管理经典指南
年轻项目经理首选

北京 | 直播 | 录播

PgMP®认证

大型复杂项目全球标准
定位高级项目管理层

网络班

PfMP®认证

链接战略与项目
实现组织资源投资回报

全球直播

软考项目管理

信息系统项目管理师
系统集成项目管理工程师

计划 | 报名 | 经验

论坛
价值源于交流与分享
会员区:
登陆ID 密  码
功能区: 公告建议 | 帖子搜索 | 管理团队 | 荣誉版主 | 帮助手册






 项目型组织  项目管理  工程项目  科技项目  项目化管理  管理软件  资格认证  职业休闲
EPM体系与流程 综合集成管理 总承包管理 IT软件开发 项目型制造 P3E/P6 PMP | PgMP 职业发展探讨
组织与人力资源 进度,范围,成本 国际工程 生物制药 专业服务 微软PROJECT IPMP | PRINCE2 管理学堂
项目管理信息化 团队建设与沟通 房地产 汽车设计开发 生活项目 PowerOn专版 软考项目管理 英语角|读书版
多项目与大项目 质量与风险 监理与咨询 手机数码 文体娱乐 注册建造师 房车吃游
PMO建设与管理 采购与合同 工程设计 项目管理硕士 闲聊版|商务版
俱乐部北京 | 大连 | 福州 | 广州 | 杭州 | 南京 | 山东 | 上海 | 深圳 | 四川 | 天津 | 武汉 | 西安 | 郑州 | 申请成立 TOP榜精华 | 最新 | 最热 | 会员

版面信息

说明:手机数码,客户与市场驱动研发,做好项目管理与产品管理是核心

本版版主

andyplay
登录:2015/1/6
次数:464
注册:2004/7/19
发帖:674

俱乐部导航

北京大连福州广州杭州
南京山东上海深圳四川
天津武汉西安郑州 

联盟·近期活动

社区热点

PgMP:交付能力与创造未来的项目管.
开放讲座|《项目组合管理与PfMP认证
开放讲座|项目组合管理与PfMP认证
开放讲座|PgMP:项目管理思维与方法
开放讲座|《项目组合管理与PfMP认证
网络讲座|《项目组合管理与个人职业
开放讲座|《项目组合管理与PfMP认证
网络直播|产品经理的四大核心技能提
如何轻松拿下PgMP?免费学习机会--.
国际项目组合经理PfMP访谈:张富贵

精彩专题

如何做好项目沟通计划

软件项目质量管理

国际工程索赔与反索赔

更多:

推荐信息

·项目经理沙龙俱乐部
·推荐项目管理公开课程
·联盟VIP会员服务
·联盟99元大课堂
·建造师课程辅导免费试听

社区圈子

IT项目管理圈
圈主:lepu29341
行业:IT软件

软件项目经理水.
圈主:camer
行业:IT软件

项目管理小茶馆
圈主:heroxmt
行业:能源煤电油

项目经理职业生.
圈主:zhenjm
行业:综合应用

集团企业生态体.
圈主:ETPPM
行业:综合应用

联系社区管理员

咨询电话 010-82273401/11
斑竹申请 admin@mypm.net


版权所有 © 2003-2004
京ICP证070584号 
BBS业务许可2007第353号 
最佳显示模式:1024*768像素
项目管理与PMP认证
[公告] 嵌入式开发流程介绍 [发表于 2006/9/22]
状态 开放帖 浏览量 1900   
想从头说清楚如何来在assabet上作linux嵌入式,是有些困难的,所以先说个大概的制作步骤吧。
首先所有的资料都来源于http://handhelds.org/http://www.lart.tudelft.nl/以及我的实践经验。

特别建议您先买块intel的assabet的开发板。
如果按照下面的资料成功的在assabet开发板上跑除了linux,那么您就可以尝试着制作自己想要的系统了,因为这些都是open source的,我想做的就是open技术和经验。国外的好多code是开放的,而且技术也是开放的,然而这些开放的东西到了国内,则会被有些技术人员作为保密资料,作为自己的价值向公司提要求......这也阻碍的国内linux的发展。我个人认为,已经公开的东西应该努力让大家可以找到,可以参考。我们要做的是在这些已有的、公开的技术上面作行业应用,而不是每个想作应用的技术人员又来从头研究如何作基础的平台。当然首先这个平台要满足需求。我希望大家可以将自己掌握的技术写出来,写成教程最好了,全民提高啊!台湾的同胞有一些中文化的计划,不是空谈,有结果出来,国内好多站点上也可以看到一些资料翻译计划,但是很少看到有结果出来。尤其有些技术一般很少使用到,如果一个有使用经验的人写出来,会更有帮助的。拜托大家了。


首先需要的资料是:

bootldr-0000-2.14.5 :bootloader,是一个纯ARM指令序列。
params-v20.bin :bootloader执行时需要的参数。
init-2-70.cramfs :kernel引导后需要的系统文件和一些基本指令(/dev /etc /home /lib /root /tmp /var等等)
root-2-57.cramfs :root filesystem,其中出现在initial中的目录为连接。
usr-2-61.cramfs :图形环境的code (/usr/X11R6)
zImage-2.4.0-rmk2-np1-hh1 :kernel

可以ftp://ftp.handhelds.org/pub/linux/compaq/ipaq/stable/update.html 下载这些资料。这些资料都有已经做好的。所以先尝试一下如何在assabet上安装一个linux环境。然后在通晓一个整体的步骤之后,再详细介绍这些资料档如何制作。

我首先大概说明一下如何安装:

ipaq 将 flash 存贮器规划成 7 个 partition, 分别是 mtdblock0 ~ mtdblock6,如下表
usage size mount dir
mtdblock0 bootldr 256K (bootldr-0000-2.14.5)
mtdblock1 kernel 512K (zImage-2.4.0-rmk2-np1-hh1)
mtdblock2 params 256K (params-v20.bin)
mtdblock3 init 1M /dev, /etc, /lib/modules, /var (init-2-70.cramfs)
mtdblock4 root 3M /bin, /sbin, /lib (root-2-57.cramfs)
mtdblock5 usr 8M /usr (usr-2-61.cramfs)
mtdblock6 local 3M or 19M(FB) /usr/local

mtdblock{3,4,5} 用 cram文件系统, /usr/local 要给 user 写入, 所以保留为 ext2文件系统. root 和 init是整个系统基本的内容, run time 不需要写入的目录集中在 root, 需要写入的目录集中在 init, 而 init 的内容将会在开机 copy 到 ramfs。usr 只规划了 8MB, 你想调整 partition 的大小, 请修改kernel目录树中 drivers/mtd/sa1100_flash.c 关于设备划分的部分.

安装开始:
首先您得有一台linux pc机,而且支持串口通信,如果不支持,请重新编译kernel。
另外您还需要一个flash烧录工具软件jflash。这里可以下载windows版Jflash。
Jflash的sourcehttp://www.lart.tudelft.nl/projects/jtag/jflash-linux.tar.gz
可以编译出linux下的jflash。

在新的assabet开发板子上是需要烧录bootloader,如果下载了bootldr-0000-2.14.5,则使用专用的JTAG接线将assabet板子和pc机连接(打印机接口),并开通电源,然后在linux主机下键入命令:
#./jflash-linux bootldr-0000-2.14.5
就会将bootldr烧录到assabet的flash中。具体的操作得看手册和多次尝试了。
具体烧录时遇到问题不会很多,如没有支持烧录的接口连线,那么您需要买专门烧录flash的板子了,用它来烧录bootldr.

也可以烧录blob,这是for LART的bootloader,下载http://www.lart.tudelft.nl/lartware/blob/
具体的烧录操作请参http://www.lart.tudelft.nl/projects/jtag/

烧录bootldr之后,接着就要烧录kernel,kernel是利用bootloader烧录的,bootloader通过串口和pc机通信。

这里说明一点,我使用的是blob,因为它灵活。而且编译也比较简单。有关blob的详细资料请参考blob source
code 中的Readme档案。

如何烧录blob:

我想最好就是使用JTAG接口线了,
1。使用JTAG接口线将Assabet与您的主机的并口相连
2。打开Assabet的电源
3。使用jflash工具:jflash-linux blob
4。重新开启Assabet的电源,只是将Assabet与主机使用串口相连,并且使用minicom,就可以看到blob启动时的输出信息。

要做好以上的工作,主要是准备jflash和blob,请在相关站点下载source,和查阅相关的资料。

如何使用blob:
1。准备工作,将Assabet与一个终端连接,一般就与pc机的串口相连,运行串口通信程序minicom,设置参数为9600波特,8位数据,无奇偶校验,1位停止位, 无起始位。(9600 8N1)。做好这些准备工作后,接通Assabet的电源,然后blob开始运行,并显示信息
--------------------------------------
blob version 2.0.3
Copyright (C) 1999 2000 2001 Jan-Derk Bakker and Erik Mouw
Copyright (C) 2000 Johan Pouwelse
blob comes with ABSOLUTELY NO WARRANTY; read the GNU GPL for details.
This is free software, and you are welcome to redistribute it
under certain conditions; read the GNU GPL for details.
Memory Map:
0x08000000 @ 0xC0000000 (8MB)
0x08000000 @ 0xC1000000 (8MB)
0x08000000 @ 0xC8000000 (8MB)
0x08000000 @ 0xC9000000 (8MB)
Loading blob from flash . done
Loading kernel from flash ....... done
Loading ramdisk from flash ............... done
Autoboot in progress, press any key to stop ...
--------------------------------------
这时可以键入任意键,就可以停在blob的命令方式下,否则将引导kernel(如果已经安装了kernel)
--------------------------------------
Autoboot aborted
Type "help" to get a list of commands
blob>
--------------------------------------
上面就是进入了blob的命令工作方式,关于blob的命令这里简单说明,具体请参考source中的readme。
* boot: 引导linux kernel。
* clock: 设置Sa1100的时钟和DRAM的频率
* download {blob|kernel|ramdisk} 通过串口下载 blob/kernel/ramdisk 的印象到RAM
* flash {kernel|ramdisk} 把 blob/kernel/ramdisk 从RAM烧录到flash中
* help 帮助信息
* reblob 从RAM中重新启动blob
* reboot 重新启动系统
* reload {blobkernel|ramdisk} 重新从Flash中调入 blob/kernel/ramdisk 到RAM
* reset 重新设置终端的状态
* speed 设置下载的速虑
* status 显示blob当前的状态
2。载入kernel:
在blob中键入命令 blob>download kernel,然后blob会改变串口传输速率到115200,并且等待串口输入,传输完成后,blob会自动切回到9600的速率。
---------------------------------------
Switching to 115200 baud
You have 60 seconds to switch your terminal emulator to the same speed and
start downloading. After that blob will switch back to 9600 baud.
---------------------------------------
在blob显示上面的信息后,请在PC主机上改变minicom的波特率到115200,然后在其他shell下使用令
uuencode zImage-2.4.0-rmk2-np1-hh1 zImage-2.4.0-rmk2-np1-hh1 > /dev/ttyS0
向串口写入kernel的Image。这里假设您所使用的串口是/dev/ttyS0.

传输完成,blob会显示如下的信息:
---------------------------------------
(Please switch your terminal emulator back to 9600 baud)
Received 65536 (0x00010000) bytes.
---------------------------------------
传输出错会显示
---------------------------------------
(Please switch your terminal emulator back to 9600 baud)
*** Uudecode receive failed
---------------------------------------
传输成功后,再将minicom切换到9600波特,在blob下输入命令
blob>flash kernel
将会把kernel写入到flash中,跟在blob所占用的flash区块的后面,完成后会显示
---------------------------------------
blob> flash kernel
Saving kernel to flash ..... .... done
---------------------------------------
3。下载ramdisk(init 和 root)
在blob中键入命令 blob>download ramdisk,
改变minicom的波特率到115200,然后在其他shell下使用令
uuencode init-2-70.cramfs init-2-70.cramfs > /dev/ttyS0
然后烧录到flash的0x00100000这个地址。
blob> flash ramdisk 0x00100000
一定要注意不能写错地址。
然后同样的方式下载root-2-57.cramfs,并烧录到0x00200000
blob>download ramdisk (uuencode root-2-57.cramfs root-2-57.cramfs > /dev/ttyS0 )
blob>flash ramdisk 0x00200000
为什么要烧到0x00100000和0x00200000,是因为从handhelds站点下载的kernel已经规划了flash,请参考前面的说明。使用blob作引导,就没有了bootldr所需要params,所以kernel和init之间的那256k flash是空的,当然如果你的kernel足够大,也可写到那里的。
4。安装usr:
由于usr这个印象比较大,当然您也可以使用串口传输并写到0x00500000。最好就是在上面的步骤都完成后,使用boot命令引导kernel,有时会出现问题,引导中断。那么可以重新打开电源,让blob自动引导,如果上面的步骤没有错误,一般就会启动了linux。可能会出现LCD的驱动有问题,LCD没有显示。那么就要参考后面讲到的如何编译kernel里的知识来修改驱动了。
还是通过minicom来与Assabet上的linux通讯,启动linux后,会自动在串口上打开一个终端,所以通过minicom来操作linux。
linux启动后,以root登录,不需要口令,然后使用ifconfig命令配置启动网卡,然后就可通过ftp将usr-2-61.cramfs下载到Assabet,使用命令
dd if=usr-2-61.cramfs of=/dev/mtdblock5
将usr-2-61.cramfs写到flash中。然后mount /dev/mtdblock5到/usr,就可以启动X了。

到了这里祝贺大家,您的嵌入式linux已经成功了!!!
上面是在已有资料的基础上来做的。大家多试几次之后,下面就开始讨论如何制作上面的这些资料

2. 编译kernel:
a) 如何得到source
b) 使用哪种文件系统和文件系统的划分(比较基本的事项)
c) LCD的支持
d) TouchScreen的支持
e) CF卡的支持
3. Xtiny的构建:
a) 取得source
b) 如何编译
c) 注意事项TouchScreen,ARM芯片的内存四字节存取限制
4. 窗口管理器
a) 如何选择
b) ――有待详细考虑
5. 整体文件系统的规划和制作
a) 如何划分
b) 如何制作
c) 注意事项
6. 交叉编译
a) gcc cross compile tools的获得toolchain
b) 如何进行cross compile

编译bootloader:

因为bootloader是在其他平台上执行的,所以一般在x86机子上要进行交叉编译。这就需要交叉编译的toolchain. 在后面将会介绍,这里是for ARM芯片的toolchain下载地址
ftp://ftp.handhelds.org/pub/linux/arm/toolchain/
如果你有arm芯片的pc,并且安装了linux,这样就可以在pc长编译bootloader而不需要交叉编译了。
这是请注意要修改Makefile中的CROSS_COMPILE = arm-linux- 这行,改为CROSS_COMPILE =

修改bootloader:

当硬件平台有所改动时,就应该修改bootloader,当由于我没有较好的硬件支持和修改的经验,所以也没有好的建议,如果有哪位这方面的经验还请共享个大家,一同交流。

kernel:

嵌入式的kernel会与pc机的有些不同,主要在设备驱动程序上(TouchScreen,LCD,CF card)。对于嵌入式的kernel,也有专人维护,每新出一kernel的新版,就会有一版新的嵌入式kernel推出。下载地址是:
ftp://ftp.handhelds.org/pub/linux/compaq/ipaq/
linux-2.4.0-rmk1-np1-hh1.tar.gz

-----------------------------------------------
Creating a new ext2 filesystem image
dd if=/dev/zero of=init-ramdisk.img bs=1k count=8k
mke2fs -i 1024 -b 1024 -m 3 -F -v init-ramdisk.img
mkdir temp
mount -o loop init-ramdisk.img temp
cd temp
(Do what you need to do.)
cd ..
umount temp
gzip -9 init-ramdisk.img
------------------------------------------------
Modifying an existing ext2 filesystem image
gunzip ramdisk-file.gz
mkdir temp
mount -o loop ramdisk-file temp
cd temp
(Do what you need to do.)
cd ..
umount temp
gzip -9 ramdisk-file

这是我摘来的我正在看.供大家参考.

--------------------------------------------------------------------------------------------------------
zhanzhang
>>> 由论坛统一发布的广告:
楼主 帅哥约,不在线,有人找我吗?zhanzhang


职务 论坛坛主
军衔 中士
来自 吉林
发帖 65篇
注册 2006/7/5
PM币 1028
经验 321点

  
!  您尚未登录,不能回复主题。    现在 登录  注册
关于联盟 | VIP会员 | 培训服务 | PMP认证 | PgMP认证 | 刊物出版 | 沙龙会议 | 人才服务 | 广告投放 | 联系我们 | 友情链接
建设运营:共创时网络
版权所有 京ICP证070584号 BBS业务许可2007第353号