制作本人的嵌入式 Linux Computer

 

嵌入式Linux内核制作

一.Linux内核简介

 

Linux系统架构分为内核空间和用户空间。它们之间切换条件:1.系统调用
2.硬件中断。

 

内核架构:1.系统调用接口 2.进程管理块 3.内存管理 4.体系结构相关代码
4.虚拟文件系统 5.网络栈 6.设备驱动

 

二.制作Linux内核

 

1.修改配置文件

 

make config –文本模式交互式的配置

 

make menuconfig –基于文本模式的菜单型配置(直观、简单、高效、推荐)

 

配置文件的选择:1.默认2.已有的配置文件,Linux系统下的/boot/目录下保存了当前系统的配置项
,我们可以直接用。

 

2.编译源码

 

make zImage — 内核小于512k时可以使用。

 

make bzImage (v=1)–编译成功后内核保存在arch/cpu/boot 目录下
的bzImage二进制文件(编译成功的前提是在源码文件目录下必须有.config文件)。

 

3.编译内核模块

 

make modules–生成内核模块(*.ko)。

 

make nodules
–将分散在各个文件夹内的内核模块收集到根目录下的/lib/modules目录下
我这里文件夹名为2.6.39

图片 1

4.制作ramdisk

 

mkinitrd rd-$version $version –例 mkinitrd rd-2.6.39 2.6.39

 

5.拷贝内核文件

 

cp linux-2.6.39/arch/x86/boot/bzImage /boot/vmlinuz-2.6.39

cp rd-2.6.39 /boot/

 

6.更改启动文件

 

vi /etc/grub.conf

图片 2

 

我原先的内核是2.6.32-279.el6.i686,我这次制作的内核为2.6.39
上面则是我修改的内容。

 

7.重启更换内核

 

在计时页面按任意键则可进入到选择内核版本界面。

图片 3

 

注:这里我们只是更改系统内核,未对用户空间的数据进行修改,所以系统启动后硬盘的数据不会发生变化。

图片 4

(查看内核版本 uname -r)

 

8.清理内核源代码

 

make clean –之清理产生*.o文件

 

make distclean–清理*.o文件、配置文件、*.ko文件

 

三.制作嵌入式内核

 

方法与制作Linux内核无多大区别,只需要注意:

配置时命令– make menuconfig ARCH=arm;

编译命令– make uImage ARCH=arm CROSS_COMPILE=arm-linux-

通常在编译是会出现缺少mkimage文件 我们可在uboot源码的/tools/目录下找
将其拷贝到根目录的/bin目录下即可。

一.Linux内核简介
Linux系统架构分为内核空间和用户空间。它们之间切换条件:1.系统调用
2.硬件中断。 内核架构:1.系…

当今所有最好的集成电路都大规模的使用BGA封装法来焊接。因为BGA封装法连接在芯片底下,焊接更紧,需要使用回流焊箱或者热印版。另一个问题是设计PCB(印刷电路板)时,过孔和引线之间的焊接球需要足够小,主板上通常需要更多层来为紧挨的引线来腾出空间,这意味着一个廉价的中国产的两层主板没有足够的空间,所以需要更多的层。附加层则会显著提高主板的成本
,就算只多了几个拷贝。

制作自己的嵌入式 Linux 电脑

当今所有最好的集成电路都大规模的使用BGA封装法来焊接。因为BGA封装法连接在芯片底下,焊接更紧,需要使用回流焊箱或者热印版。另一个问题是设计PCB(印刷电路板)时,过孔和引线之间的焊接球需要足够小,主板上通常需要更多层来为紧挨的引线来腾出空间,这意味着一个廉价的中国产的两层主板没有足够的空间,所以需要更多的层。附加层则会显著提高主板的成本
,就算只多了几个拷贝。

我想设计一款内置BGA芯片的主板来体验下焊接它们究竟是有多难。于是我决定设计一个可运行Linux的小型ARM嵌入式系统,使用的ARM处理器是在一个217球的LFBGA包中的AT91SAM9N12,只是因为在带有运行Linux必需的内存管理单元的ARM处理器中,它是最便宜的。起初我只想用一块BGA芯片,但是BGA包中的RAM比其他包里要便宜很多,所以我就决定在BGA包也增加一块DDR2(Double
Data Rate 2)的内存。

图片 5
为最大化可用空间定位过孔。

结果寻找主板生产商还颇费了一番周折。两层的空间是还不够的,至少需要4层。217-LFBGA包的球直径是0.4mm,临接球的距离是0.8mm。为了给过孔多留些空间,球的焊盘布局做的要比焊球要稍小一些。我用的0.36mm的焊盘。在4个球之间放置过孔会最大程度的利用可用空间。厂商要能制造可以放进0.8mm宽度的过孔。几乎所有厂商都可以制造这种直径大小的过孔,但问题是:这个距离包括了过孔的钻孔直径,两倍的过孔绕环的宽度
,两倍的过孔和引线之间的最小距离。比如,iTead的4层主板最小的过孔钻孔直径是0.3mm,
最小环宽度是0.15mm,过孔和引线的最小距离是0.15mm,加起来是0.9
mm,这意味着最小尺寸的过孔不能放在BGA球之间。我发现的唯一一家可以实现这一要求而且价钱相对合理的生厂商是OSH
parks。他们的四层主板有更小的限制,过孔刚刚可以放进BGA球里面。额外的好处是,对于小主板而言,它要比iTead更便宜一些。

图片 6
在OSH park设计原则下最小的过孔,刚刚能放下。

即使过孔可以放进BGA
球中间,仍然有一些问题:过孔中间没有足够的空间走线。这意味着要让每一个焊盘都有一个过孔的标准布线通道是不可能了。这就是说主板需要有足够的未经连接的焊盘,所以过线需要从里面进行布置。幸运的是,处理器还有很多通用的未连接的I/O引脚。

图片 7
… 如果不违反设计原则的话,过线就不能正好在两个过孔之间穿过。CAS
过线没有足够的空间来放入DQM0 和 D15过孔。

生产问题解决了,是时候开始想想主板上该放哪些部件了。我并不很在乎这块主板的实际用处,相对于用处而言,整个项目更是一个学习的过程。为了降低成本,主板的尺寸要小。这意味着不会为其他额外的接口预留空间,比如:以太网,串口或者SD卡。

除了处理器和RAM外,其他必需的部件是:大内存,电压调整器,以及处理芯片重置的监控电路。处理器可以从NAND启动,但是以防万一我决定为引导装载程序加入Dataflash(数据闪存),虽然最终会很少被用到。对于大内存而言,NAND是一个很好的选择因为他容量大又便宜。在BGA包中加入会更便宜些,但我已经被两个BGA包折腾的够呛了,所以我决定在一个48引脚的TSOP(薄型小尺寸封装)包里面使用4GB的NAND。连接各个组件在处理器的清单表中已经解释的很好了,但是在上千页的文档中要找到全部的细节还是很难的。Atmel
也发布了一个试用板的原理图,在设计主板时会很有帮助。

DDR2
引线空间应该有一定的自由度。正常的引线应该长度合适,有可控的阻抗和可以终止或者串联电阻。在开发板的参考设计中,所有DDR2的信号使用了串联电阻。我没有足够的空间放置他们,所以我决定暂且放着不管。阻抗也不是50欧姆,因为我必须使用小一些的引线来填充其他的空间。我希望的是,因为RAM更靠近处理器,就算缺少串联电阻箱或者阻抗不匹配,关系也不大。所有从CPU到RAM的连线大约是25mm长。通常的经验是:如果引线的长度要超过信号波长的10%时,转换线的影响应该被考虑进去。这种情况意味着频率大约在1
GHz以上。RAM的时钟频率只有133 MHz, 甚至头几个谐波还在1
GHz以下,这预示着应该会正常工作。为了保证可行,我几乎完全匹配了引线的长度,但这也许不是必须的。

更多详情见请继续阅读下一页的精彩内容:

  • 1
  • 2
  • 3
  • 4
  • 5
  • 下一页

Linux 电脑
当今所有最好的集成电路都大规模的使用BGA封装法来焊接。因为BGA封装法连接在芯片底下,焊接更紧,需要使…

嵌入式Linux内核制作,嵌入式linux内核

一.Linux内核简介

    Linux系统架构分为内核空间和用户空间。它们之间切换条件:1.系统调用
2.硬件中断。          内核架构:1.系统调用接口 2.进程管理块 3.内存管理
4.体系结构相关代码 4.虚拟文件系统 5.网络栈 6.设备驱动   二.制作Linux内核
    1.修改配置文件         make config –文本模式交互式的配置        
make menuconfig –基于文本模式的菜单型配置(直观、简单、高效、推荐)  
               配置文件的选择:1.默认  
2.已有的配置文件,Linux系统下的/boot/目录下保存了当前系统的配置项
,我们可以直接用。       2.编译源码         make zImage —
内核小于512k时可以使用。         make bzImage
(v=1)–编译成功后内核保存在arch/cpu/boot 目录下
的bzImage二进制文件(编译成功的前提是在源码文件目录下必须有.config文件)。
        3.编译内核模块         make modules  –生成内核模块(*.ko)。  
      make nodules
–将分散在各个文件夹内的内核模块收集到根目录下的/lib/modules目录下
我这里文件夹名为2.6.39
图片 8  
 4.制作ramdisk     mkinitrd rd-$version $version —   例 mkinitrd
rd-2.6.39 2.6.39     5.拷贝内核文件         cp
linux-2.6.39/arch/x86/boot/bzImage /boot/vmlinuz-2.6.39         cp
rd-2.6.39 /boot/   6.更改启动文件         vi /etc/grub.conf
 图片 9  
我原先的内核是2.6.32-279.el6.i686,我这次制作的内核为2.6.39
上面则是我修改的内容。     7.重启更换内核        
在计时页面按任意键则可进入到选择内核版本界面。
 图片 10
图片 11
注:这里我们只是更改系统内核,未对用户空间的数据进行修改,所以系统启动后硬盘的数据不会发生变化。
(查看内核版本 uname
-r)图片 12    
8.清理内核源代码         make clean –之清理产生*.o文件         make
distclean  –清理*.o文件、配置文件、*.ko文件   三.制作嵌入式内核    
方法与制作Linux内核无多大区别,只需要注意:             配置时命令  —
make menuconfig ARCH=arm;             编译命令      — make uImage
ARCH=arm CROSS_COMPILE=arm-linux- 通常在编译是会出现缺少mkimage文件
我们可在uboot源码的/tools/目录下找 将其拷贝到根目录的/bin目录下即可。  
                

一.Linux内核简介
Linux系统架构分为内核空间和用户空间。它们之间切换条件:1.系统调用
2.硬件中断。…

QT是目前在Linux操作系统平台下应用最多的图形用户界面的底层库,由其派生出的QT/Embedded大量用于嵌入式系统开发和研制中。实际上,QT/Embedded提供给用户的非ASCII码的字库一般比较少,在我们开发过程中用的嵌入式Linux系统中中文和日文的字库都只有一个(不算不同的旋转角),其中还存在字体大小不一样的问题,因此在实际开发过程中我们在处理中文字体显示时,最终使用这些工具开发出来的软件的用户就经常抱怨字体很难看,字体大小有时都不一致,因此定制自己的字库,以便使得最终用户能够看到漂亮的中文显示,这是使用QT/Embedded开发各种程序急需解决的一个问题。下面龙人嵌入式开发工作这首先向您介绍如何在嵌入式
Linux及下制作QPF字库:

我想设计一款内置BGA芯片的主板来体验下焊接它们究竟是有多难。于是我决定设计一个可运行Linux的小型ARM嵌入式系统,使用的ARM处理器是在一个217球的LFBGA包中的AT91SAM9N12,只是因为在带有运行Linux必需的内存管理单元的ARM处理器中,它是最便宜的。起初我只想用一块BGA芯片,但是BGA包中的RAM比其他包里要便宜很多,所以我就决定在BGA包也增加一块DDR2(Double
Data Rate 2)的内存。

首先定制自己的字库需要修改两个文件,一个是FONTDIR,它是应用程序寻找当前系统中最适合自己需要的字库的索引;另一个就是字库文件了,可以有一个或者多个字库文件,字库文件是最终显示的字的位图或者矢量。它们都必须放在目录/usr/qt/lib/fonts下(基于我们的平台QT/Embedded,其它平台可能有区别,下同)。

图片 13
为最大化可用空间定位过孔。

其次编写具体的FONTDIR文件的内容如下所示:

结果寻找主板生产商还颇费了一番周折。两层的空间是还不够的,至少需要4层。217-LFBGA包的球直径是0.4mm,临接球的距离是0.8mm。为了给过孔多留些空间,球的焊盘布局做的要比焊球要稍小一些。我用的0.36mm的焊盘。在4个球之间放置过孔会最大程度的利用可用空间。厂商要能制造可以放进0.8mm宽度的过孔。几乎所有厂商都可以制造这种直径大小的过孔,但问题是:这个距离包括了过孔的钻孔直径,两倍的过孔绕环的宽度
,两倍的过孔和引线之间的最小距离。比如,iTead的4层主板最小的过孔钻孔直径是0.3mm,
最小环宽度是0.15mm,过孔和引线的最小距离是0.15mm,加起来是0.9
mm,这意味着最小尺寸的过孔不能放在BGA球之间。我发现的唯一一家可以实现这一要求而且价钱相对合理的生厂商是OSH
parks。他们的四层主板有更小的限制,过孔刚刚可以放进BGA球里面。额外的好处是,对于小主板而言,它要比iTead更便宜一些。

fixed fixed_120_50.qpf QPF n 50 120
helvetica helvetica_80_50.qpf QPF n 50 80
helvetica helvetica_120_50.qpf QPF n 50 120 u
helvetica helvetica_120_75.qpf QPF n 75 120 u
helvetica helvetica_140_75.qpf QPF n 75 140
helvetica helvetica_180_75.qpf QPF n 75 180

图片 14
在OSH park设计原则下最小的过孔,刚刚能放下。

文件中每行都标识一个特定的字库,每个段的含义是:第一列为name,第二列为file,第三列为renderer,相当于字型格式,所以有BDF,TTT,QPF等选择。第四列n表示iitalic,表示是否为斜体字。第五列表示weight,其中50表示Normal,75表示Bold。第六列表示size,例如:120表示12pt。第七列为flags,有下面三个选择:s=smooth(anti-aliased)u
=unicode range when saving (default is Latin 1 a = ASCII range when
saving(default is Latin 1))

即使过孔可以放进BGA
球中间,仍然有一些问题:过孔中间没有足够的空间走线。这意味着要让每一个焊盘都有一个过孔的标准布线通道是不可能了。这就是说主板需要有足够的未经连接的焊盘,所以过线需要从里面进行布置。幸运的是,处理器还有很多通用的未连接的I/O引脚。

这样一个QPF字库就嵌入式Linux环境中生成了。

图片 15
… 如果不违反设计原则的话,过线就不能正好在两个过孔之间穿过。CAS
过线没有足够的空间来放入DQM0 和 D15过孔。

生产问题解决了,是时候开始想想主板上该放哪些部件了。我并不很在乎这块主板的实际用处,相对于用处而言,整个项目更是一个学习的过程。为了降低成本,主板的尺寸要小。这意味着不会为其他额外的接口预留空间,比如:以太网,串口或者SD卡。

除了处理器和RAM外,其他必需的部件是:大内存,电压调整器,以及处理芯片重置的监控电路。处理器可以从NAND启动,但是以防万一我决定为引导装载程序加入Dataflash(数据闪存),虽然最终会很少被用到。对于大内存而言,NAND是一个很好的选择因为他容量大又便宜。在BGA包中加入会更便宜些,但我已经被两个BGA包折腾的够呛了,所以我决定在一个48引脚的TSOP(薄型小尺寸封装)包里面使用4GB的NAND。连接各个组件在处理器的清单表中已经解释的很好了,但是在上千页的文档中要找到全部的细节还是很难的。Atmel
也发布了一个试用板的原理图,在设计主板时会很有帮助。

DDR2
引线空间应该有一定的自由度。正常的引线应该长度合适,有可控的阻抗和可以终止或者串联电阻。在开发板的参考设计中,所有DDR2的信号使用了串联电阻。我没有足够的空间放置他们,所以我决定暂且放着不管。阻抗也不是50欧姆,因为我必须使用小一些的引线来填充其他的空间。我希望的是,因为RAM更靠近处理器,就算缺少串联电阻箱或者阻抗不匹配,关系也不大。所有从CPU到RAM的连线大约是25mm长。通常的经验是:如果引线的长度要超过信号波长的10%时,转换线的影响应该被考虑进去。这种情况意味着频率大约在1
GHz以上。RAM的时钟频率只有133 MHz, 甚至头几个谐波还在1
GHz以下,这预示着应该会正常工作。为了保证可行,我几乎完全匹配了引线的长度,但这也许不是必须的。

更多详情见请继续阅读下一页的精彩内容
http://www.linuxidc.com/Linux/2014-09/106092p2.htm

图片 16

发表评论

电子邮件地址不会被公开。 必填项已用*标注