北溟有愚 - xjznmd的BLOG http://xjznmd.52rd.net/ - 复制 - 收藏
博 文
 摘要:本文针对 ARM7 芯片 S3C4510 开发板,对 uCLinux 在嵌入式设备中的系统开发做了介绍,如何组建软件开发平台,并对引导装载程序,设备驱动程序作了例证和分析。        关键词:嵌入式  uCLinux    ARM   BootLoader  驱动程序      1  引言           信息家电和手持设备大大加速了嵌入式系统的发展,而 ARM 体系 32 位高性能、低功耗处理器和嵌入式操作系统 Linux 无疑成为佼佼者。因为 Linux源代码开放、免费,任何将其定制于 PDA、掌上机或者便携式设备感兴趣的人都可以从因特网免费下载其内核和应用程序,并开始移植或开发,所以 Linux 在嵌入式开发领域得到稳步发展。uCLinux 即是目前嵌入式 linux  中最流行的一种,它是针对微控制领域而设计的Linux 系统,其最大特征就是没有 MMU(内存管理单元模块),适合嵌入式系统小型化应用。     uCLinux 支持多任务,支持多种文件系统,提供了对网络的强大支持,具有完整的 TCP/IP 协议栈,以及标准丰富的 API。由于它的很多核心代码都为没有被 MMU 的处理器重新编写过,对标准 Linux庞大的应用程序库和驱动程序库作了删改,所以它的内核要比常规的 Linux  内核小很多;uCLinux 包含Linux 常用的 API 和小于 512k 的内核及相关的工具,总代码只有 900k 左右,但同时保留了常规 Linux  操作系统绝大多数的优点。      2  基于...
本文通过整理之前研发的一个项目(ARM7TDMI + uCLinux),分析内核启动过程及需要修改的文件,以供内核移植者参考。整理过程中也同时参考了众多网友的帖子,在此谢过。由于整理过程匆忙,难免错误及讲解的不够清楚之处,请各位网友指正,这里提前谢过。本文分以下部分进行介绍:  Bootloader及内核解压  内核启动方式介绍  内核启动地址的确定  arch/armnommu/kernel/head-armv.S分析  start_kernel()函数分析 1. Bootloader及内核解压      Bootloader将内核加载到内存中,设定一些寄存器,然后将控制权交由内核,该过程中,关闭MMU功能。通常,内核都是以压缩的方式存放,如zImage,这里有两种解压方法:使用内核自解压程序。arch/arm/boot/compressed/head.S或arch/arm/boot/compressed/head-xxxxx.Sarch/arm/boot/compressed/misc.c在Bootloader中增加解压功能。使用该方法时内核不需要带有自解压功能,而使用Bootloader中的解压程序代替内核自解压程序。其工作过程与内核自解压过程相似:Bootloader把压缩方式的内核解压到内存中,然后跳转到内核入口处开始执行。 2. 几种内核启动方式介绍XIP (EXECUTE IN PLACE) 是指直接从存放代码的位置上启动运行。2.1 非压缩,非XIP非XIP方式是指在运行之前需对代码进行重定位。该类型的内核以非压缩方式存放在Flash中,启动时由Bootloader加载到内存后运行。2.2 非压缩,XIP该类型的内核以非压缩格式存放在ROM/Flash中,不需要加载到内存就能运行,Bootloader直接跳...
http://www.ibm.com/developerworks/cn/linux/ :植的总结    ——杭州立宇泰电子有限公司 1.概述     本文是针对“如何在以S3C44B0X为核心的ARMSYS开发板上建立uClinux内核移植”的一个总结,其内容包括对Bootloader的功能分析和uClinux2.4.24发行版内核基础上针对S3C44B0X开发板进行修改的重点内容的逐一列举。 2.Bootloader 2.1Bootloader概述     Boot Loader 就是在操作系统内核运行之前运行的一段程序。通过这段程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。因此,正确建立uClinux的移植的前提条件是具备一个与uClinux配套、易于使用的 Bootloader。    ARMSYS开发板提供了这样一个uClinux专用的Bootloader,该Bootloader程序烧录在系统的地址0x0处,每次上电即运行,能够正确完成硬件系统的初始化和uClinux的引导。   理论上,uClinux引导时并非一定需要一个独立于内核的Bootloader。然而,将Bootloader与内核分开设计能够使软件架构更加清晰,也有助于灵活地支持多种引导方式,实现一些有用的辅助功能。 ARMSYS提供的Bootloader的主要任务可以概括如下:   1.硬件初始化;   2.从主机下载新的内核映像和文件系统映像;  3.烧写NorFlash和Nandflash;  4.加载uClinux 内核映像并启动运行;   5.提供串行超级终端上的人机操作界面。 2.2存储空间分布  ...
uClinux 在 S3C4510B 嵌入式开发板上的移植和开发详解     文档选项   打印本页    将此页作为电子邮件发送    刘 朋 (liupcdl@cn.ibm.com), 软件工程师, IBM 2007 年 12 月 20 日 本文对 uClinux 在 S3C4510B 嵌入式开发板上的移植、网络服务设置、驱动以及用户程序开发等问题进行了较为详细的介绍。本文中所总结的经验可供在上述嵌入式环境下工作的开发人员借鉴,也能为其他嵌入式平台的开发提供一定的启发。嵌入式系统的特点在于:针对特定的应用,使用“量体裁衣”的方式将所需的功能嵌入到各种应用系统当中。其早期主要应用于军事及航空、航天领域,之后逐步被工业控制、汽车电子、通信和消费电子领域广泛使用。与此同时,各种新兴的应用也对嵌入式系统的处理能力、通信能力等方面提出了更高的要求。 S3C4510B 正是 Samsung 公司针对新兴网络应用而开发的一款性价比很高的 ARM 核 16/32 位RISC 微处理器。它内含一个由 ARM 公司设计的高性能、低功耗的 ARM7TDMI 内核,内置 10/100M Ethernet 控制器、HDLC 控制器等一系列网络通信控制器,特别适合对价格和功耗均比较敏感的嵌入式网络应用。 uClinux 是针对通信和控制领域的嵌入式操作系统,其主要的优势在于开放源代码、稳定、强大的网络通信功能以及其精简性。其内核功能与 Linux 基本相同,只是对内存管理和进程管理进行了改写,主要应用于没有 MMU 的微处理器平台,如 S3C4510B 处理器。 本文根据笔者在实际工作中积累的经验,对 uClinux 在S3C4510B上的移植...
正在处理中,请稍后…… Linux学习之系统FAQ     [From] 红联Linux论坛  --- 问:Linux系统中,有哪些主要的日志子系统?答:连接时间日志由多个程序执行,把记录写到/var/log/wtmp和/var/run/utmp,并由login等程序更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。进程统计由系统内核执行。当一个进程终止时,为每个进程向进程统计文件(Pacct或acct)中写一个记录。进程统计的目的是为系统中的基本服务提供命令使用统计。错误日志由syslogd(8)执行。各种系统守护进程、用户程序和内核通过syslogd(3)向文件/var/log/messages报告值得注意的事件。另外,有许多Unix程序创建日志。像HTTP和FTP这样提供网络服务的服务器也保持详细的日志。 问:Linux下tar和rsync区别?答:tar命令用来建立最初的副本,rsync命令则是用来获取最后一个副本建立以来所发生的变更。在不存在任何目标文件时,tar比rsync要快。如果两个文件系统差异很小,则rsync比tar快许多。问:Linux有哪些常用的系统维护文件?答:(1)/etc/hosts:主机名字解析文件,提供主机名和IP地址的对应。(2)/etc/passwd:包含有口令文件、登录用户名、加密口令、用户ID、组ID、初始工作目录和Shell路径等信息。(3)/etc/grofup:包含有组名、加密密码、组ID及所有属于该组的用户的信息等。(4)/etc/profile:可以设置通用环境变量。(5)/etc/inittab:内部初始化之后,系统将启动/etc/init这个Deamon进程,使 /etc/init进程取得引导序列是控制权...
网络问题(3) (2008-4-1 14:39)
ifconfig 无论是Linux自动安装还是我们手工安装,Linux都会向你询问有关网络的问题并配置相关的软件。这个用于配置网卡的基本命令就是ifconfig。   在执行ifconfig命令后,系统将在内核表中设置必要的参数,这样Linux就知道如何与网络上的网卡通信。ifconfig命令有以下两种格式:   ※ifconfig [interface]   ※ifconfig interface [aftype] option | address …   ifconfig的第一种格式(或使用不带任何参数的ifconfig命令)可以用来查看当前系统的网络配置情况。   在刚刚安装完系统之后,实际上是在没有网卡或者网络连接的情况下使用Linux,但通过ifconfig可以使用回绕方式工作,使计算机认为自己工作在网络上。   现在我们运行一下ifconfig命令,不带参数的ifconfig命令可以显示当前启动的网络接口,其输出结果为: ----------------------------------------------------------- [root@machine1 /sbin]#ifconfig eth0 Link encap:Ethernet Hwaddr 52:54:AB:DD:6F:61 inet addr:210.34.6.89 Bcast:210.34.6.127 Mask:255.255.255.128 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:46299 errors:0 dropped:0 overruns:0 frame:189 TX packets:3057 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 Interrupt:5 Base address:0xece0 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:3924 Metric:1 RX packets:44 errors:0 dropped:0 overruns:0 frame:0 TX packets:44 errors:...
linux网络配置 (2008-4-1 14:36)
1,把用来上网用的Vnet-PPPoE连接用来共享。这时候本地连接的ip自动更改为 192.168.0.1   2,在虚拟机的以太网4种连接中选择桥接   3,用root帐户登陆,在终端上用netconfig配置IP:192.168.0.2 。子网掩码:255.255.255.0   网关:192.168.0.1 至于DNS(在真机上的运行里输入cmd用ipconfig -all可以得到真机上。真机上网的DNS,这也就是虚拟机上网要用的DNS)   4,用service network restart 使刚才的配置生效   5,用ifconfig查看配置是否正确   6,然后就用ping来查看网络是否通了,就这样如果你真机可以上网的话,那么虚拟机上的linux也就可以上网拉。当然你需要先把真机拨号上网以后虚拟机才能上得。   注意:一般真机是可以ping通虚拟机的,但ping不出来,这时候就需要把你真机上的防火墙关掉了。     今天配了一下虚拟机的网络,以前也试图配过,没配好,就放下了。    找了一下,一位老大写了VMware 网络配置实例,拿过来直接用了,按照上面说的方法,如下:     (1)查看网络连接,选择“高级”标签,设置成允许共享,并设定允许的网络接口为VMNET1。     (2)查看VMnet1 的属性,看一下TCP/IP协议的设置,已经被自动设置为192.168.0.1,网络掩码255.255.255.0。     (3)Windows下的设置完成,转入到跑linux的虚拟机。将eth0的ip地址设置为静态的。           i、图形界面下:  &nb...
正在处理中,请稍后……        网 卡是Linux服务器中最重要网络设备。据统计,Linux网络故障有35%在物理层、25%在数据链路层、10%在网络层、10%在传输层、10%在对 话、7%在表示层、3%在应用层。由此可以看出,网络故障通常发生在网络七层模型的下三层,即物理层、链路层和网络层。对应于实际网络也就是使用的网卡、 网络线缆交等设备故障。    在Linux 网络设备在配置时被赋予别名,该别名由一个描述性的缩略词和一个编号组成。某种类型的第一个设备的编号为 0,其他设备依次被编号为 1、2、3,等。但是网卡并不是作为裸设备出现在/dev目录下,而是存在内存中。eth0, eth1是以太网卡接口。它们用于大多数的以太网卡,包括许多并行端口以太网卡。本文主要讨论这类网卡。 为Linux以太网卡设定IP地址的方式非常灵活,你可以选择适合你工作情况的方法:    1. 使用ifconfig命令    ifconfig命令是最重要的Linux网络命令之一,最主要的用途是设定、修改网卡的IP地址,修改网卡ip地址:    # ifconfig eth0  192.168.149.129 netmask 255.255.255.0      默认情况下, ifconfig 显示活动的网络设备。给这个命令添加一个 -a 开关就能看到所有设备。但是ifconfig命令设置网络设备的ip地址系统重新启动后设置会自动失效。所以它主要用于网卡状态调试。假设您要建立一个临 时的网络配置以供测试。您可以使用发行版本中的工具来...
实验问题(2) (2008-3-25 18:29)
参考武汉创维特公司的FAQS5.6(P7-8)
实验问题收集(1) (2008-3-18 19:04)
请指点:我现在在调我新焊接的一块arm44b0的板子,sdram和cpu好像调好了,也能在sdram里面跑程序了,可是我用flashpgm烧flash的时候老提示:Target Communications Error:Unable to put Target into Background Mode. 请问这是什么原因?请赐教!谢谢 A1: 首先,确定你使用的是否是Wiggler调试头,因为flashpgm需要Wiggler调试头的支持。接下来就是检查连线有无问题。排除这些问题以后,就可能是板子虚焊的问题,建议你重新焊一次。
博 主
进入xjznmd的首页
博客名称:北溟有愚
日志总数:13
评论数量:3
访问次数:20136
建立时间:2007-12-30 12:32:00
导 航
公 告
注册已经有一段时间了 现在打算开博了
评 论
链 接