int main(void)
{
printf("Hello, everybody!\n");
}
/* 为啥空出那么多呢?*/
参考:
http://klcintw4.blogspot.com/2006/11/blog-post_03.html
int main(void)
{
printf("Hello, everybody!\n");
}
/* 为啥空出那么多呢?*/
scsi-2::1985年,10MHz,16位总线。
scsi-3::1993年,已经成为了一种标准集,它包含一种命名为Ultra的并行scsi标准和基于 串行scsi和基于串行scsi的协议,这些标准通过引入存储网络技术将数据速率拓展到了 1Gb/s。
从ibm developerworks大致了解三层架构:
从这里获得scsi标准的细节:
我们的目标在于linux的实现(pdf, 321KB):
笔记目标将会从sd_mod.o起步,清晰中间层(mid),上层(upper)和底层(lower)的大 致架构,最后深入到公司最近正在移植的sata_sil驱动。
muse允许通过简单的样式控制,制作出非常漂亮的网页。
很简单的,我先给出几个例子。
#title 第一个Wiki页面生成的页面:
* 一级标题
** 二级标题
*** 三级标题
#anchor
段落需要空行两个(至少)
居中字前只少空四格
----
这是 *着重* 的文字,这是进一步 **着重** 的文字,这是 ***更进一步的着重*** 的文字
这是 _下划线_ 文字,这是 =等宽verbatim and monospace= 的文字
*** 列表:
- 无序列表需要以空格和“-”开头
1. 有序列表需要以空格和数字序号开头
字典 :: 名词定义需要以“::”分隔名词和所定义文字
- 列表也可以嵌套
1. 列表嵌套深度按照开头空格的多少来控制
2. 可以继续嵌套不同类型的列表
- 比如这样
*** 表格:
Double bars || Separate header fields
Single bars | Separate body fields
Here are more | body fields
Triple bars ||| Separate footer fields

高亮代码是一个比较头疼的问题,大家给出的方案也不一样。在blogger中,你可以使用
Google的prettyprint方法来实现高亮,但是它支持代码样式很少;同样2maomao也写了一个
高亮语法的工具,相对来说总是麻烦点;其实使用emacs高度的拓展性完全可以做到这点。
这里给出了一个使用muse来实现语法高亮的模式,这个方法非常的cool。它将emacs强大的
高亮特性报留下来,嵌入到了html中。
阅读上面的例子就可以看到,通过很少的字符,就可以实现工整的格式控制,这对于编写繁
杂冗长的标志语言和记住大批的标记来说,是一种极好的替代。muse编写的脚本可以简单的
声称很多种文档发布,包括HTML,Latex,PDF等等,多多使用,也自然可以可以极大提高工
作效率。
参考资料
HAL在eCos中是一个多层次的架构,层级封装了不同的功能,它包括:
架构抽象包含基本的CPU架构,比如interrupt,上下文切换,CPU启动等
变体抽象层专注某一CPU的特性,比如caches,MMU和FPU等,他通常也处理内存和中断 控制器等外设。
平台抽象层专注于现任的平台特性,比如平台启动,定时器,I/O寄存器访问和中断控 制器等等。
这里讲究HAL实现了哪些接口。
这里包含了CPU基础架构的定义。包括了CPU段文存储格式,上下文切换,bit twiddling, 断点,堆栈大小和地址转换。这些定义位于:
以下为议题细节
这些接口定义了中断处理相关的定义,包括了异常和中断号,中断允许和屏蔽和实时时钟操 作。这些定义可以位于:
cyg/hal/hal_intr.h (arch HAL)
而变体和平台抽象层定义位于:
议题细节:
此接口定义了对设备控制寄存器的访问支持。
议题细节有:
此接口定义了CPU caches的控制支持。
详细议题:
连接器脚本对于eCos程序来说是必须的,他定义了内存区域,地址和尺寸,代码段和数据段 的放置位置,还有分配不同的编译器声称的段。
一般lds位于install/lib/target.ld,它事实上是由其他两类文件声称,一个基本的lds和 ldi文件声称的。
基本lds由arch HAL或者var HAL提供,它由一组lds段组成。ldi由plf HAL提供哦你,它包 含目标平台的的内存布局信息,位于
pkgconf/mlt_
这些ldi文件都是由相应的mlt(memory layout tool)脚本生成的。
略
略
参考资料
Cirrus Logic是美国德州的一家半导体制造商,早在1989年就进入NASDAQ,股票代码是CRUS。
EP93xx是基于ARM920T的主板系列,在官方上你可以看到详尽的EP9302资料。
http://www.cirrus.com/en/products/pro/detail/P1066.html
EP9302和EP9301最大的区别就在于,CPU核心加入了一个浮点运算部件MaverickCrunch。
我在开始的时候曾经说过,eCos支持非常多的架构,包括ARM, CalmRISC, FR-V, H8,
IA32, M68K, Matsushita AM3x, MIPS, NEC V8xx, PowerPC, SPARC, SuperH。这是eCos非
常值得骄傲的一点,也充分发挥了开源的长处。但是毕竟世界上的主板千千万,从汽车到蓝
牙,无线设备等等等等,eCos开发小组也无法支持所有的主板。如果厂商新推出一个主板,
那多半需要自己拓展eCos来支持自己的新板,我所使用的Cirrus Logic就是一个例子。
你可以在官方网站上找到这些工具:
(此工作环境是在Red Hat Linux 9.0下配置完成,嵌入式开发普遍需要串口支持。)
if [ `id -u` = 0]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
#newly added for arm-3.4
pathmunge /usr/local/arm/3.4/bin
fi
这步会非常简单。Cirrus几乎把一切工作都做好了,解压cirrus-arm-linux-2.0.8.tar.bz2
进入目录 cirrus-arm-linux-2.0.8/edb9302,直接编译
cd /path/to/cirrus-arm-linux-2.0.8/edb9302
make redboot
然后得到cirrus-arm-linux-2.0.8/edb9302/images/redboot.bin,这就是一个redboot内核,
他使用了ecos的redboot模板,创建针对EP9302主板的ecos内核。安装也是比较方便,这使
用到了cirrus给的download工具(如果没有,你还需要编译):
../download/download -p 1 images/redboot.bin
通常情况下,我们的主板都是不允许FLASH被任意擦写的,这个规定在硬件上被强制实现:
用短路块连接EP9302的JP14的2、3脚。相反接到1、2脚,这个时候Flash会根据写入的协议
向外发布数据,待download侦测到数据时候会进行握手和数据传递。
然后关闭主板,进入EP9302,则可以进入Redboot命令行。
# busybox config这样就在/path/to/cirrus-arm-linux-2.0.8/edb9302/images中生成两个文件:
cd /path/to/cirrus-arm-linux-2.0.8
tar jxf tarballs/busybox-1.1.3.tar.bz2
cd busybox
make menuconfig
# compile ramdisk.gz
cd /path/to/cirrus-arm-linux-2.0.8/edb9302
make ramdisk
# compile linux zImage
make linuxconfig
make linux
然后进入EP9302 redboot配置主板(主要是网络)。
# ---- 主板配置部分 ----
# Local IP address是EP9302 IP地址
# Default server IP address是RH9 IP地址
RedBoot> fcon -i
Initialize non-volatile configuration - continue(y/n)
Run script at boot: true
Boot script:
Enter script, terminate with empty line
>> fis load ramdisk
>> fis load zImage
>> exec -r 0x800000 -s 0x800000
>>
Boot script(1000ms resolution): 1
Use BOOTP for network configuration: false
Gateway IP address: 192.168.16.1
Local IP address: 192.168.16.93
Local IP address mask: 255.255.255.0
Default server IP address: 192.168.16.91
DNS server IP address:
Network hardware address[MAC]:0x78:0x56:0x34:0x12:0x64:0x30
GDB connection port: 9000
Force console for special debug messages: false
Network debug at boot time: false
Update RedBoot non-volatile configuration - continue(y/n)? y
# ---- 拷贝文件部分 ----
RedBoot> fis init -f
RedBoot> load -v -r -b 0x800000 ramdisk.gz -h 192.168.16.91
RedBoot> fis create -b 0x800000 -l 0x800000 ramdisk
RedBoot> load -v -r -b 0x80000 zImage -h 192.168.16.91
RedBoot> fis create -b 0x80000 -l 0x120000 zImage
# ---- 重启 ----
RedBoot> re
重启EP9302之后,主板开机加载RedBoot,然后执行默认的启动脚本,加载ramdisk和zImage。
就这样我们进入Linux,第一次进入嵌入式Linux的感觉,是不是很奇妙?
