U-BOOT下怎么初始化的串口

作者:苗德行,华清远见嵌入式培训中心讲师。

调用函数board_init_f(u-boot-1.1.6/lib_mips/board.c),进入函数board_init_f后,首先做一系列初始化:

jz_board_init PAVO板gpio, pll,clocks,sdram memory,rtc初始化
        timer_init        时钟初始化
        env_init        环境变量初始化(取得环境变量存放的地址)
        init_baudrate        串口速率初始化
        serial_init,        串口初始化
        console_init_f,        配置控制台
        display_banner,        显示u-boot启动信息,版本号等
        checkboard,        执行board相关的操作。
        init_func_ram        初始化内存,配置SDRAM 控制器

经过以上的初始化,串口和内存就可以使用了,接下来是内存的划分,在内存的顶部4k内存保留,我是这样理解的:u-boot启动时,默认的是console=ttySAC0

内核下串口驱动怎么理解

Init进程已经打开“/dev/console”设备作为控制台,但是如果内核启动init进程的同时设置了环境变量console,则根据环境变量的设置,及console=…传递到内核的参数,内核找到匹配的驱动,然后打印内核启动信息

串口驱动程序从上到下可以分为四层:终端设备层,行规则,串口抽象层,串口芯片层。

终端设备层向上提供统一的访问接口,使得用户不必关心具体的终端设备的类型。

行规则的作用是指定数据交互的“规矩”,比如流量控制,对输入数据进行变换处理等。常用的用途有:将TAB键转化为8个空格,当接收到删除键时删除前面的输入的字符,当接收到“CTRL+C”字符发送SIGINT信号等。

串口抽象层和串口芯片都属于底层的驱动,它们用来操作硬件。串口抽象层将各类串口的共性概括出来,它也是底层驱动的核心部分,比如根据串口芯片层提供的地址识别串口类型,设置串口波特率等。

串口芯片层和具体芯片相关,主要是向串口抽象层提供串口所用的资源,还进行一些芯片相关的设置。对于标准串口,移植的工作主要是在这一层。

其中,开发板2410所用的内核2.6.35的串口驱动在drivers/serial/samsung.c

Drivers/serial/s3c2410.c文件,其中samsung.c是底层核心,而s3c2410.c调用了它。

你可能感兴趣的:(Boot)