• (转) 从0移植uboot(五) _实现串口输出


    ref : https://www.cnblogs.com/xiaojiang1025/p/6500520.html


     

    串口作为一种非常简单的通信方式,才是嵌入式系统调试的王道,通过设置串口输出,我们可以将程序运行的情况直接通过串口线输出到屏幕上,对于这种异常重要的功能,uboot原生就提供了支持,但为此我们需要做一些准备工作, 流程还是那套:

    1. 找运行逻辑,即插入代码的位置。
    2. 根据运行逻辑编写功能代码。
    3. 找配置逻辑,即修改哪些文件使配置生效。
    4. 根据配置逻辑修改配置使功能代码生效。
    5. 重新编译烧写uboot。

    1. 找运行逻辑

    通过(二)的分析, 我们了解到初始化串口的工作在BL2的"board/samsung/myboard/lowlevel_init.S"中进行, 所以我们的工作就是在这个文件中添加相应的代码.

    2. 编写功能代码

    为了让串口工作, 我们需要添加如下代码
    添加临时栈

     41 lowlevel_init:
     42         ldr sp,=0x02060000                      @use iRom stack in bl2
     43         push    {lr}

    关闭看门狗

     67         beq     wakeup_reset
     68 
     69 #if 1 /*for close watchdog */
     70         /* PS-Hold high */
     71         ldr r0, =0x1002330c
     72         ldr r1, [r0]
     73         orr r1, r1, #0x300
     74         str r1, [r0]
     75         ldr
     76          r0, =0x11000c08
     77         ldr r1, =0x0
     78         str r1, [r0]
     79         /* Clear MASK_WDT_RESET_REQUEST */
     80         ldr r0, =0x1002040c
     81         ldr r1, =0x00
     82         str r1, [r0]
     83 #endif
     84         /*

    串口初始化

    352         str     r1, [r0, #EXYNOS4_GPIO_A1_CON_OFFSET]
    353 #if 1
    354         ldr r0, =0x10030000
    355         ldr r1, =0x666666
    356         ldr r2, =CLK_SRC_PERIL0_OFFSET
    357         str r1, [r0, r2]
    358         ldr r1, =0x777777
    359         ldr r2, =CLK_DIV_PERIL0_OFFSET
    360         str r1, [r0, r2]
    361 #endif                                                                                                                          
    362         ldr r0, =EXYNOS4_UART_BASE

    注释掉 trustzone 初始化

    104         /* for UART */
    105         bl uart_asm_init
    106                             @bl tzpc_init

    3. 找配置逻辑

    这些汇编代码也不需要特别的配置, 重新编译即可生效

    4. 修改配置

    5. 重新编译烧写

    进行了这些工作,我们就可以接上串口线看一下是否有串口输出, 下面是我把网卡一起移植之后的结果, 当然, 这个界面是串口的功劳.

  • 相关阅读:
    Kafka: Producer (0.10.0.0)
    Kafka:架构简介【转】
    ZooKeeper示例 分布式锁
    机器学习---人脸对齐的基于形状模型的训练
    人脸妆容迁移---研究和思考
    机器学习----人脸对齐的算法-ASM.AAM..CLM.SDM
    基于opencv+Dlib的面部合成(Face Morph)
    c语言编程-----指向二维数组的指针
    工具软件 PYUV打开raw图片
    eclipse 使用问题
  • 原文地址:https://www.cnblogs.com/schips/p/11396432.html
Copyright © 2020-2023  润新知