PCI: bus0: Fast back to back transfers disabled
PCI: Configured XX as a PCI slave with 128MB PCI memory
PCI: Each Region size is 16384KB
PCI: Reserved memory from 0x10080000 to 0x15080000 for DMA and mapped to 0x12000000
设备的初始化 init()--->do_basic_init()--->pci_init(),初始化PCI,检测系统的PCI设备。
Linux NET4.0 for Linux 2.4Based upon Swansea University Computer Society NET3.039
英国威尔士,斯旺西大学的NET3.039, TCP/IP 协议栈
此信息,在linux启动过程中都会出现。
Initializing RT netlink socket
对Socket的初始化,socket_init(),Netlink 一种路由器管理协议(linux-2.4.22\net\core\Rtnetlink.c,Routing netlink socket interface: protocol independent part。 其中RT是route路由的意思。这句输出是在create产生rtnetlink的socket套接字时的一个调试输出。)
此信息,在linux启动过程中都会出现。
Starting kswapd
启动交换守护进程kswapd,进程IO操作例程kpiod
kswapd可以配合kpiod运行。进程有时候无事可做,当它运行时也不一定需要把其所有的代码和数据都放 ......
摘要
我们在这里讨论的是对嵌入式linux系统的启动过程的输出信息的注释,通过我们的讨论,大家会对嵌入式linux启动过程中出现的、以前感觉熟悉的、但却又似是而非的东西有一个确切的了解,并且能了解到这些输出信息的来龙去脉。
嵌入式linux的启动信息是一个很值得我们去好好研究的东西,它能将一幅缩影图呈现在我们面前,来指导我们更加深入地理解linux内核。
关键字:linux,嵌入式,启动,bootloader
正文
作为一名嵌入系统开发者,你一定遇到过下面的情景:
在某论坛上看到一篇帖子,上面贴着嵌入式linux开发板启动时的有关信息,然后大家在帖子里讨论着这个启动过程中出现的问题,随机举例如下:
Linux version 2.4.20-uc0 (root@Local) (gcc version 2.95.3
20010315 (release)(ColdFire patches - 20010318 from http://f
(uClinux XIP and shared lib patches from http://www.snapgear.com/)) #20 三 6月 1
8 00:58:31 CST 2003
Processor: Samsung S3C4510B revision 6
Architecture: SNDS100
On node 0 totalpages: 4096
zone(0): 0 pages.
zone(1): 4096 pages.&nb ......
在linux中,运行的一个进程,会占去linux的三个地方,代码区,堆栈区和数据区.如果同时运行多个相同的程序,他们就会使用相同的代码区,代码区中存放的就程序的代码,但是数据区和堆栈区分别存放的是程序的数据,全局变量和局部变量,因此即使是相同的程序,也不可同时使用相同的数据和堆栈区.
#include<stdio.h>
#include<unistd.h>
int main()
{
if(fork() == 0)
{
printf("First.\n");
if(fork() == 0)
{
printf("Second.\n");
}
else
{
......
Samba是一个网络服务器,用于Linux和Windows共享文件之用;Samba 即可以用于Windows和Linux之间的共享文件,也一样用于Linux和Linux之间的共享文件;不过对于Linux和Linux之间共享文件有更好的网络文件系统NFS(NFS也是需要架设服务器的)。Samba可以定位为一套功能极为强大的文件服务器软件,所谓文件服务器就是将文件服务主机上的目录分享出来,让您可以透过网络对分享出来的目录里的文件,做执行、读取、写入等动作。基本上NT/2000的网域是使用NetBEUI做计算机命名服务,使用广播封包来侦测网络上有哪些计算机、哪些目录提供资源共享,而Samba与UNIX主机间的沟通(如目录、文件分享)是透过TCP/IP协议达成任务,Samba若要与NT网域做沟通,透过TCP/IP当然是行不通的,只好使用NetBIOS对NT网域做广播,让Windows机器能够认识它,进而成为NT网域成员;因此Samba是使用smbd守护进程透过TCP/IP联系Unix主机,而使用nmbd守护进程透过NetBIOS对NT/2000网域做联系,也就是说Samba使用两种机制达成资源共享的目的。
若没有安装Samba,在Ubuntu中可以用sudo apt-get install来安装samba和smbfs(samba的文件系统)。smb是Samba的主要启 ......
Linux支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统VFS(Virtual File System),为各类文件系统提供一个统一的操作界面和应用编程接口。
Linux下的文件系统结构如下:
Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。
不同的文件系统类型有不同的特点,因而根据存储设备的硬件特性、系统需求等有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为RAM(DRAM, SDRAM)和ROM(常采用FLASH存储器),常用的基于存储设备的文件系统类型包括:jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs等。
1. 基于FLASH的文件系统
Flash(闪存)作为嵌入式系统的主要存储媒介,有其自身的特性。Flash的写入操作只能把对应位置的1修改为0,而不能把0修改为1(擦除Flash就是把对应存储块的内容恢复为1),因此,一般情况下, ......
链表的删除
83/*
84 * Delete a list entry by making the prev/next entries
85 * point to each other.
86 *
87 * This is only for internal list manipulation where we know
88 * the prev/next entries already!
89 */
90static inline void __list_del(struct list_head * prev, struct list_head * next)
91{
92 next->prev = prev;
93 prev->next = next;
94}
该函数通过设置prev和next指针指向彼此,实现了删除二者之间节点的功能。但是这里我有个疑惑,删除的指针的释放在哪里实现。
96/**
97 * list_del - deletes entry from list.
98 * @entry: the element to delete from the list.
99 * Note: list_empty() on entry does not return true after this, the entry is
100 * in an undefined state.
101 */
102#ifndef CONFIG_DEBUG_LIST
103static inline void list_del(struct list_head *entry)
104{
105 __list_del(entry->prev, entry->next);
106 entry->next = LIST_POISON1;
107 entry->prev = LIST_POISON2;
108}
109#else
110extern void list_del(struct list_head *entry);
111#endif
该函数通过 ......