linux启动时最开始初始化lcd时是在什么地方?

lieye_leaves 2011-06-28 11:03:20
linux启动时最开始初始化lcd是在什么地方?看了lcd的驱动但是找不到初始化的地方。
...全文
251 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wayne-Woo 2011-07-08
  • 打赏
  • 举报
回复
lcd_init()类似的函数
hero1985 2011-07-06
  • 打赏
  • 举报
回复
do_initcalls就会调用所有的init_call函数,也就是module_init里声明的函数
#define INITCALLS \
*(.initcallearly.init) \
VMLINUX_SYMBOL(__early_initcall_end) = .; \
*(.initcall0.init) \
*(.initcall0s.init) \
*(.initcall1.init) \
*(.initcall1s.init) \
*(.initcall2.init) \
*(.initcall2s.init) \
*(.initcall3.init) \
*(.initcall3s.init) \
*(.initcall4.init) \
*(.initcall4s.init) \
*(.initcall5.init) \
*(.initcall5s.init) \
*(.initcallrootfs.init) \
*(.initcall6.init) \
*(.initcall6s.init) \
*(.initcall7.init) \
*(.initcall7s.init)

#define INIT_CALLS \
VMLINUX_SYMBOL(__initcall_start) = .; \
INITCALLS \
VMLINUX_SYMBOL(__initcall_end) = .;

链接器把所有这些函数指针放在相邻的逻辑地址中,因此就会依次初始化了
LCD驱动作为一个module,也不例外
lieye_leaves 2011-07-01
  • 打赏
  • 举报
回复
新发现个问题,在Linux启动时会调用 do_basic_setup(),里面会调用do_initcalls(),会调用用module_init(XXXXX)注册的函数,但是在linux内部有多处类似module_init(XXXXX),即多处的声明,但是在do_initcalls()只是调了一次注册函数,为什么会这样?我现在是这样理解的,可能有问题。LCD的启动也是通过module_init()来注册的。
hero1985 2011-06-30
  • 打赏
  • 举报
回复
一般都在LCD驱动的probe函数里

4,441

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧