根据log信息解读内核(linux-2.6.32.24)的启动流程

目录

概述

1 从bootloader 到内核部分

2 初始化cache和CPU时钟

3 获取cache和memory信息

4 初始化cache、电源管理和中断

5 初始化USB和I2C

6 网络协议初始化

7 挂载JFFS2文件系统和初始化IO

8 初始化外围device

9 Nand Flash资源分配

10 初始化网络接口

11 注册USB Devices

12 初始化触摸屏驱动

13 RTC、watchdog,sd初始化

14 初始化声卡设备

15 注册网络设备和初始化文件系统

16 挂载根文件系统和进入控制台

17 完整log文件


概述

笔者已经移植该内核到板卡mini2440中,现在该内核已经在mini2440上能正常启动,控制台上也能输入命令,输出log。本文主要以linux-2.6.32.24内核为基础,分析内核在mini2440板卡终端输出的log,分析其启动过程中做了哪些具体的功能,这样能加深对内核的理解。

1 从bootloader 到内核部分

代码1行:显示当前bootloader的信息

代码3行:从nand flash 启动内核

代码4行:加载内核到内存

代码5~6行:解压内核

代码7行:解压内核成功,得到内核版本,编译器版本等内容

2 初始化cache和CPU时钟

代码9行: 得到ARM内核信息

代码10行:开启数据cache和指令cache

代码11行:得到机器号

代码12行:提示bootloader太老了,这里不去管它,只要内核能正常启动就行

代码13行:关闭ECC,回写数据cache

代码15行:得到CPU ID

代码16行:初始化Clock

代码17行:配置时钟频率,外围资源的工作时钟

代码18行:使能锁相环

代码19行:建立系统内存页区(zone)链表和分配CPU 内的页面表

3 获取cache和memory信息

代码22行: console解析命令功能初始化

代码23行: 得到PID hash table信息

代码24行: 得到dentry-cache信息

代码25行: 得到Inode-cache信息

代码26行:得到内存的空间

4 初始化cache、电源管理和中断

代码32行:清除中断挂起状态

代码34行:控制台谁出功能使能

代码36行:挂载hash table

代码37行:测试写数据功能

代码38行:注册网络协议族

代码39行:初始化S3C2440电源管理模块

代码40行:初始化S3C2440 系统架构

代码41行:初始化S3C2440 IRQ中断模块

代码42~46行:初始化S3C2440 DMA驱动模块

5 初始化USB和I2C

代码50~52行:注册USB driver

代码53~55行:初始化S3C2440 I2C设备

6 网络协议初始化

代码58行:分配IP协议cache

代码59~62行:分配TCP协议cache

代码63~66行:注册TCP和UDP协议

7 挂载JFFS2文件系统和初始化IO

代码68行:得到JFFS2文件系统的版本

代码71~75行:初始化IO调度表

8 初始化外围device

代码79行:lcd 背光驱动初始化

代码80行:adc驱动初始化

代码82行:pwm驱动初始化

代码83行:leds驱动初始化

代码84~86行:串口驱动初始化

9 Nand Flash资源分配

代码89~92行:初始化nandflash,获取nand flash的相关参数

代码94~97行:分配nand flash内部空间

10 初始化网络接口

代码102行:初始化dm9000驱动

代码103行:配置MAC地址

11 注册USB Devices

代码105~113行:注册USB设备协议栈

代码114行:注册设备信息

12 初始化触摸屏驱动

代码116行:初始化触摸屏驱动

代码117行:背景灯初始化

代码118行:加载驱动

代码119行:触摸屏功能使能

13 RTC、watchdog,sd初始化

代码121~124行:rtc初始化

代码125行:i2c设备使能

代码126~127行:watch dog初始化

代码130~139行:sd卡设备初始化

代码140~142行:注册USB设备

14 初始化声卡设备

代码144行:得到声卡的信息

代码147~149行:初始化声卡设备

15 注册网络设备和初始化文件系统

代码153行:注册TCP协议栈

代码156~157行:yaffs文件系统和设备已经绑定起来

代码158~160行:sdi接口已经正常工作

代码161~163行:sd卡初始化完成,已经能识别SD的内存信息

16 挂载根文件系统和进入控制台

代码156行:挂载根文件系统

代码169~172行:系统时间初始化

代码174行:网络连接成功

代码177行:控制台输入使能提示信息

代码179行:进入控制台

17 完整log文件

 log文件内容:

Superboot-2440 V1.5(20150414) by FriendlyARM

Booting from NAND
Load Kernel...
Uncompressing Linux....................................................................
.............................................................. done, booting the kernel.
Linux version 2.6.32.24 (mftang@mftang-HP-350-G1) (gcc version 4.4.3 (ctng-1.6.1) ) #25 Thu Mar 21 10:00:48 CST 2024

CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177
CPU: VIVT data cache, VIVT instruction cache
Machine: MFTANG_MINI2440
ATAG_INITRD is deprecated; please update your bootloader.
Memory policy: ECC disabled, Data cache writeback

CPU S3C2440A (id 0x32440001)
S3C24XX Clocks, (c) 2004 Simtec Electronics
S3C244X: core 405.000 MHz, memory 101.250 MHz, peripheral 50.625 MHz
CLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL on
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 16256


Kernel command line: noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0
PID hash table entries: 256 (order: -2, 1024 bytes)
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 64MB = 64MB total
Memory: 60572KB available (3656K code, 419K data, 132K init, 0K highmem)
SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
Hierarchical RCU implementation.

NR_IRQS:85
irq: clearing subpending status 00000002
Console: colour dummy device 80x30
console [ttySAC0] enabled
Calibrating delay loop... 201.93 BogoMIPS (lpj=504832)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
S3C Power Management, Copyright 2004 Simtec Electronics
S3C2440: Initialising architecture
S3C2440: IRQ Support
S3C24XX DMA Driver, (c) 2003-2004,2006 Simtec Electronics
DMA channel 0 at c4808000, irq 33
DMA channel 1 at c4808040, irq 34
DMA channel 2 at c4808080, irq 35
DMA channel 3 at c48080c0, irq 36
S3C244X: Clock Support, DVS off
bio: create slab <bio-0> at 0

usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
s3c-i2c s3c2440-i2c: slave address 0x10
s3c-i2c s3c2440-i2c: bus frequency set to 98 KHz
s3c-i2c s3c2440-i2c: i2c-0: S3C I2C adapter

NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
NET: Registered protocol family 1
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.

JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
ROMFS MTD (C) 2007 Red Hat, Inc.
msgmni has been set to 118
alg: No test for stdrng (krng)
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered

Console: switching to colour frame buffer device 120x45
fb0: s3c2410fb frame buffer device
backlight       initialized
adc     initialized
pwm     initialized
leds    initialized
buttons initialized
s3c2440-uart.0: s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2440
s3c2440-uart.1: s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2440
s3c2440-uart.2: s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2440
brd: module loaded

S3C24XX NAND Driver, (c) 2004 Simtec Electronics
s3c24xx-nand s3c2440-nand: Tacls=3, 29ns Twrph0=7 69ns, Twrph1=3 29ns
s3c24xx-nand s3c2440-nand: NAND soft ECC
NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-bit)
Creating 5 MTD partitions on "NAND 256MiB 3,3V 8-bit":
0x000000000000-0x000000040000 : "supervivi"
0x000000040000-0x000000060000 : "param"
0x000000060000-0x000000560000 : "Kernel"
0x000000560000-0x000040560000 : "root"
mtd: partition "root" extends beyond the end of device "NAND 256MiB 3,3V 8-bit" -- size truncated to 0xfaa0000
0x000000000000-0x000040000000 : "nand"
mtd: partition "nand" extends beyond the end of device "NAND 256MiB 3,3V 8-bit" -- size truncated to 0x10000000

dm9000 Ethernet Driver, V1.31
eth0: dm9000e at c4872300,c4876304 IRQ 51 MAC: 08:90:90:90:90:90 (platform data)

ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
s3c2410-ohci s3c2410-ohci: S3C24XX OHCI
s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1
s3c2410-ohci s3c2410-ohci: irq 42, io mem 0x49000000
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
usbcore: registered new interface driver libusual
s3c2440-usbgadget s3c2440-usbgadget: S3C2440: increasing FIFO to 128 bytes
mice: PS/2 mouse device common for all mice

touchscreen-1wire       initialized
backlight-1wire initialized
s3c2410 TouchScreen successfully loaded
input: s3c2410 TouchScreen as /devices/virtual/input/input0

S3C24XX RTC, (c) 2004,2006 Simtec Electronics
s3c2410-rtc s3c2410-rtc: rtc disabled, re-enabling
one_wire_status: 5
s3c2410-rtc s3c2410-rtc: rtc core: registered s3c as rtc0
i2c /dev entries driver
S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics
s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabled
cpuidle: using governor ladder
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
s3c-sdi s3c2440-sdi: powered down.
s3c-sdi s3c2440-sdi: mmc0 - using pio, sw SDIO IRQ
s3c-sdi s3c2440-sdi: running at 0kHz (requested: 0kHz).
s3c-sdi s3c2440-sdi: running at 398kHz (requested: 400kHz).
s3c-sdi s3c2440-sdi: running at 398kHz (requested: 400kHz).
s3c-sdi s3c2440-sdi: running at 398kHz (requested: 400kHz).
s3c-sdi s3c2440-sdi: running at 398kHz (requested: 400kHz).
s3c-sdi s3c2440-sdi: running at 398kHz (requested: 400kHz).
s3c-sdi s3c2440-sdi: running at 398kHz (requested: 400kHz).
usbcore: registered new interface driver hiddev
usbcore: registered new interface driver usbhid
usbhid: v2.6:USB HID core driver

Advanced Linux Sound Architecture Driver Version 1.0.21.
No device for DAI UDA134X
No device for DAI s3c24xx-i2s 
S3C24XX_UDA134X SoC Audio driver
UDA134X SoC Audio Codec
asoc: UDA134X <-> s3c24xx-i2s mapping ok
ALSA device list:
  #0: S3C24XX_UDA134X (UDA134X)

TCP cubic registered
NET: Registered protocol family 17
s3c2410-rtc s3c2410-rtc: hctosys: invalid date/time
yaffs: dev is 32505859 name is "mtdblock3" rw
yaffs: passed flags ""
s3c-sdi s3c2440-sdi: running at 398kHz (requested: 400kHz).
s3c-sdi s3c2440-sdi: running at 16875kHz (requested: 25000kHz).
s3c-sdi s3c2440-sdi: running at 16875kHz (requested: 25000kHz).
mmc0: new SD card at address e624
mmcblk0: mmc0:e624 SD02G 1.84 GiB
mmcblk0: p1

VFS: Mounted root (yaffs filesystem) on device 31:3.
Freeing init memory: 132K
FAT: codepage cp437 not found
FAT: codepage cp437 not found
hwclock: settimeofday() failed: Invalid argument
[01/Jan/1970:00:00:17 +0000] boa: server version Boa/0.94.13
[01/Jan/1970:00:00:17 +0000] boa: server built Jul 26 2010 at 15:58:29.
[01/Jan/1970:00:00:17 +0000] boa: starting server pid=787, port 80

Try to bring eth0 interface up......eth0: link down
Done

Please press Enter to activate this console. eth0: link up, 100Mbps, full-duplex, lpa 0xC5E1

[root@FriendlyARM /]#

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/477322.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一文快速掌握docker的理念和基本使用

写在文章开头 写于一个周末&#xff0c;在复盘梳理文章时候发现这一篇关于早期了解docker时记录的文档&#xff0c;仔细阅读了一下&#xff0c;为了保证文章更加清晰以便读者使用。故再次重新一次梳理一次&#xff0c;通过这篇文章&#xff0c;你将会对docker的基本理念和基础…

Expert Prompting-引导LLM成为杰出专家

ExpertPrompting: Instructing Large Language Models to be Distinguished Experts 如果适当设计提示&#xff0c;对齐的大型语言模型&#xff08;LLM&#xff09;的回答质量可以显著提高。在本文中&#xff0c;我们提出了ExpertPrompting&#xff0c;以激发LLM作为杰出专家回…

【C语言基础】:字符串函数(二)

文章目录 一、strncpy函数的使用二、strncat函数的使用三、strncmp函数的使用四、strstr函数的使用和模拟实现4.1 strstr函数的使用4.2 strstr函数的模拟实现 五、strtok函数的使用六、strerror函数的使用 上节回顾&#xff1a;【C语言基础】&#xff1a;字符函数和字符串函数 …

【ubuntu20.04+tensorflow-gpu1.14配置】

ubuntu20.04tensorflow-gpu1.14配置 目录0. 版本注意事项说明1. 个人目录下载后配置系统环境变量2. anaconda配置所有环境&#xff08;过程简便&#xff0c;但容易出现不兼容问题&#xff09;3. 验证tensorflow-gpu4. 一些细节 目录 总结出两种方法 个人目录 下载cuda和cudnn…

分库分表场景下多维查询解决方案(用户+商户)

在采用分库分表设计时&#xff0c;通过一个PartitionKey根据散列策略将数据分散到不同的库表中&#xff0c;从而有效降低海量数据下C端访问数据库的压力。这种方式可以缓解单一数据库的压力&#xff0c;提升了吞吐量&#xff0c;但同时也带来了新的问题。对于B端商户而言&#…

赋能智能未来:AI大模型的学习之旅

随着人工智能的迅速发展&#xff0c;AI大模型已经成为技术领域的一个热点。这些模型以其强大的数据处理能力和预测精度&#xff0c;正在不断推动着科技的边界&#xff0c;并且在医疗、金融、交通等多个行业中显示出了巨大的潜力。然而&#xff0c;构建和训练一个高效的AI大模型…

C#非强签名dll搜索顺序

由于不是强签名dll&#xff0c;所以无效考虑全局程序集缓存 (GAC)。 预备工作 新建解决方案ClassLibrary1,新建类库ClassLibrary1,新建控制台程序ShowDllLoc。 利用VS添加引用。 一&#xff0c;利用app.config设置codebase&#xff0c;设置dll的加载路径为&#xff1a;code…

探索海外市场舆情:云手机助力企业赢得全球竞争

在全球化的趋势下&#xff0c;越来越多的企业将目光投向海外市场&#xff0c;迎接着无尽的商机与挑战。然而&#xff0c;随之而来的是境外市场舆情的复杂变化&#xff0c;对企业的声誉和发展带来了潜在风险。如何准确、及时地掌握境外市场的舆情动向&#xff0c;成为了企业必须…

RabbitMQ介绍及搭建

架构 RabbitMQ是实现了高级消息队列协议&#xff08;AMQP&#xff09;的开源消息代理软件&#xff0c;使用erlang语言编写&#xff0c;依赖Erlang环境运行。 Broker&#xff1a;运行消息队列服务进程的节点&#xff0c;包含Exchange、Queue&#xff1b; Producer&#xff1a;消…

C语言:自定义类型:结构体

目录 1. 前言 2. 结构体初识 3. 结构体创建变量 3.1 方法一 3.2 方法二 4. 结构体初始化 5. 结构体自引用 6. 结构体的大小 6.1 结构体对齐规则 6.2 常规结构体 6.3 结构体成员含数组 6.4 结构体嵌套结构体 6.5 为什么存在结构体对齐&#xff1f; 6.6 修改默认对…

idea创建angular项目

1.idea创建项目 idea&#xff1a;2023.2.3版本 不做赘述&#xff0c;我这里是创建模块&#xff0c;创建项目的话大同小异 2.创建完成后注意一下红色部分&#xff0c;后期需要 3.进入项目根目录 注意&#xff1a;一定要进入项目根目录&#xff0c;就是我们上面红色方框部分&a…

Java安全 反序列化(4) CC1链-LazyMap版

Java安全 反序列化(4) CC1链-LazyMap版 实验环境:存在漏洞的版本 commons-collections3.1-3.2.1 jdk 8u71之后已修复不可利⽤ 文章目录 Java安全 反序列化(4) CC1链-LazyMap版一.跟踪挖掘CC1_LazyMap原理二.完整CC1_Lazy版Poc 接着上一篇文章我们通过ChainedTransFormer实现任意…

vue3+threejs新手从零开发卡牌游戏(二):初始化场景

在删掉初始化中一些没用的代码后&#xff0c;在views目录下新建game文件夹&#xff0c;在里面新建一个index.vue&#xff0c;这里就当成游戏的主入口。 目录结构如下&#xff1a; 下面开始尝试创建场景&#xff1a; 一、添加一个div作为threejs的画布对象&#xff0c;之后整个…

电网的正序参数和等值电路(一)

本篇为本科课程《电力系统稳分析》的笔记。 本篇为第二章的第一篇笔记。 电力系统正常运行中&#xff0c;可以认为系统的三相结构和三相负荷完全对称。而对称三相的计算可以用一相来完成&#xff0c;其中所有给出的标称电压都是线电压的有效值&#xff0c;假定系统全部是Y-Y型…

如何将软件大规模部署到基于 Linux 的 IoT 设备

物联网( IoT) 改变了我们与世界互动的方式&#xff0c;将无数设备连接到互联网&#xff0c;从我们家中的智能恒温器到制造工厂的工业传感器。这些 IoT 设备的很大一部分依赖于 Linux 操作系统&#xff0c;因为它具有灵活性、稳健性和开源特性。 将软件大规模部署到基于 Linux …

react-jsx

react04 jsx语法 - 01 基础知识&#xff1a; jsx javascript xml(html) 把js和heml标签混合到一起 react视图编写及构建的简要流程 &#xff1a; 如何在react中使vs code支持格式化和快捷键提示&#xff1a;1, 2,修改文件后缀为jsx&#xff0c;因为webpack的打包规则中可以…

【蓝桥杯】RMQ(Range Minimum/Maximum Query)

一.概述 RMQ问题&#xff0c;是求区间最大值或最小值&#xff0c;即范围最值问题。 暴力解法是对每个询问区间循环求解&#xff0c;设区间长度n&#xff0c;询问次数m&#xff0c;则复杂度是O ( nm )。 一般还可以使用线段树求解&#xff0c;复杂度是O(mlogn)。 但还有一种…

守护数据安全,远离.locked勒索病毒:有效防御策略分享

导言&#xff1a; 随着信息技术的飞速发展&#xff0c;网络空间的安全问题日益凸显&#xff0c;其中勒索病毒便是一种严重的网络安全威胁。近年来&#xff0c;.locked勒索病毒逐渐进入人们的视野&#xff0c;其强大的破坏性和高隐蔽性使得许多个人和企业深受其害。本文将对.lo…

比堆垛机方案省电65% 实施快50% 四向车系统柔性化建设进程异军突起

对物流企业来说&#xff0c;供应链的数智化升级并非“赶时髦”&#xff0c;它需要找到一个既懂物流行业&#xff0c;又有数字化技术作基础的仓储方案提供商。而河北沃克基于AI底层技术、软硬一体化产品体系和技术创新行业经验双轮驱动的业务团队等“技术产品人才”三位一体优势…

AndroidStudio 由dolphin升级到giraffe,出现“gradle project sync failed“

1 现象描述 将AS由之前的dolphin版本升级到giraffe之后&#xff0c;接着打开以前的Android project&#xff0c;出现了"Gradle project sync failed…"的异常提示&#xff0c;在build面板中并没有出现project sync过程中报错的日志。 异常提示如下图所示&#xff1a…