- 2
- 0
- 约1.13万字
- 约 11页
- 2022-09-20 发布于上海
- 举报
串口初始化过程
start_kernel()
| ...
| setup_arch()
| ...
| build_all_zonelists()
| page_alloc_init()
| ...
| trap_init()
| ...
| console_init()
| ...
| mem_init()
| ...
` rest_init() kernel_thread() -- init() --do_basic_setup()
console_init() [drivers/char/tty_io.c]
/* 只作基本的初始化,详细的初始化在后面做 */ void init console_init(void)
{
initcall_t *call;
/* Setup the default TTY line discipline. */
(void) tty_register_ldisc(N_TTY, tty_ldisc_N_TTY);
/*
set up the console device so that later boot sequences can
inform about problems etc..
*/
#ifdef CONFIG_EARLY_PRINTK
disable_early_printk(); #endif
call = con_initcall_start;
while (call con_initcall_end) { (*call)();
call++;
}
}
然后执行依次执行 .con_initcall.init 节中的函数,该节的每项为一个函数指针,使用宏
console_initcall(FUNC_NAME) 将函数指针填入,该宏定义于 [include/linux/init.h]:
#define console_initcall(fn) \
static initcall_t initcall_##fn \
attribute_used attribute (( section (.con_initcall.init)))=fn initcall_t 为一函数指针: typedef int (*initcall_t)(void);
如: console_initcall(serial8250_console_init) 则展开为:
static initcall_t initcall_serial8250_console_init = attribute_used \
attribute (( section (.con_initcall.init))) =
serial8250_console_init;
即定义一个函数指针,使其指向 serial8250_console_init,并使用gcc 的 attribute 扩展, 将其链接入.con_initcall.init 节,方便管理。
一个典型的 .con_initcall.init 节的内容为:
...
Disassembly of section .con_initcall.init:
80234f90 initcall_serial8250_console_init:
80234f90: 802328e4 lb v1,10468(at) # 这 是 一 个 函 数 指 针 , 指 向
serial8250_console_init
80234f94 initcall_early_uart_console_init:
80234f94: 80232ce4 lb v1,11492(at)
...
因此 console_init() 所做的,就是:
console_init()
| tty_register_ldisc() /* Install a line discipline, [drivers/char/tty_io.c] */
| serial8250_console_init()
` early_uart_console_init()
serial8250_console_init
serial8250_console_init() 定义于 [drivers/serial/8250.c]
static int init serial8250_console_init(void)
{
serial8250_isa_init_ports(); register_console(serial8250_console); return 0;
}
console_initcall(serial8250_console_init);
static struct
您可能关注的文档
最近下载
- 《工业控制系统简介》课件.ppt VIP
- 村委员竞选演讲稿汇总7篇.docx VIP
- 客户服务管理.ppt VIP
- 给排水国标图集-04S520:埋地塑料排水管道施工.pdf VIP
- 小学生主题班会通用版《珍爱生命,远离毒品》课件(共24张PPT+视频).pptx VIP
- 聚集性事件、药品群体不良事件调查处置标准操作规程.docx VIP
- 团圆绘本教学省公开课一等奖全国示范课微课金奖PPT课件.pptx VIP
- 2026年度江苏旅游职业学院单招《数学》综合提升测试卷及答案详解(典优).docx VIP
- 2025至2030中国烟草包装行业发展研究与产业战略规划分析评估报告.docx VIP
- 青岛天信BPJ-500-1140矿用隔爆兼本质安全变频器说明书.pdf VIP
原创力文档

文档评论(0)