一、代码流程

1.1 串口代码

  程序流程图如下;

  

  default_serial_console 执行的代码如下:

  

  

  在JZ2440.H中有如下定义:

  

  则执行结构体s3c24xx_serial0_device,从而执行INIT_S3C_SERIAL_STRUCTURE(0, "s3ser0"):

  

  _serial_setbrg 为串口时钟设置函数:

  

  其中,调用get_PCLK()进行串口时钟的设置:

  

  PCLK的计算涉及到 HCLK,在函数中调用了get_HCLK() 来获取HCLK的值。

  

  get HCLK的代码就HCLK的计算,这里对应着寄存器CLKDIVN:

  

  此时我们已经不需要在往下分析了。从我们的代码上看,设置与配置都没有问题,宏的定义已经存在了。也不需要配置了,但是u-boot启动后却无法打印CPU信息。

  那么就只能看看u-boot.dis文件了,看我们的代码流程执行的是否与我们所想的代码流程一样。

二、串口打印

  首先我们定位到串口的初始化:

  

  在38a8这个地址执行了跳转,跳转到了 2e43c  serial_initalize 串口初始化函数,查找2e43c 进入串口初始化:

  

  这里再执行了跳转,跳转到了 serial_fin_console_or_panic 这个函数,这里就感觉优点不对了,我们分析的串口初始化的跳转应该是跳转到s3c24xx_serial_initialize() 这个函数中,去执行。Serial.c (drivers\serial)

  这里跳转是跳转到serial_initialize()中,然手再跳转到serial_find_console_or_panic 去执行。这两个函数都在Serial-uclass.c (drivers\serial)中。

  代码执行的流程不对了,就要看看makefile中的配置是否正确了。

  在 drivers/serial/Makefile 中有如下定义:

  

  查一看 CONFIG_DM_SERIAL 在哪里有定义:

  

  

  在 include/configs/jz2440.h 的文件中,是没有定义CONFIG_DM_SERIAL 的,但是我们看到在 include/generated/autoconfig.h 中定义了CONFIG_DM_SERIAL 为1。

  同样 也看见生成的u-boot.cfg文件中,CONFIG_DM_SERIAL 有这一行。

  autoconfig.h文件是由.config文件自动生成的。因此我们可以直接修改我们的jz2440_defconfig文件来控制这个条件。但是不需要这么做,我们可以使用 make menuconfig 来控制:

  在u-boot 的根目录下执行命令: make menuconfig,然后按 “/” 搜索 CONFIG_DM_SERIAL

  

  配置位置,看location 下面的,进入DEVICE Drivers->Serial drivers:

  

  这里默认配置了两项,上一张图的搜索中,Prompt 一栏说明了我们CONFIG_DM_SERIAL对应的是 Enable Driver Model for serial drivers,选择它,然后选择help 查看信息:

  

  意思是:使能串口驱动模型。这个模型是用串口 uclass 来替代 drivers/serial/serial.c ,uclass 实现 serial_putc() 等。uclass 接口被定义在 include/serial.h 中。

  我们不需要此配置,所以取消选中,保存退出。

  重新编译u-boot,然后生成dis文件。

  再看下串口初始化的位置:

  

  接着跳转到我们需要的文件中去了:

  

  执行烧写,查看结果,由于本人的是WIN10系统,运行DNW造成[ERROR:Can't create dnw.ini],因此直接用JTAG进行烧写,烧写完成后,显示结果为:

  

  DNW兼容性不好,电脑好还是有JTAG直接进行烧写进 nor flash。用DNW发送文件后,烧写进nor flash虽然成功,但是报错[ERROR:Can't create dnw.ini]造成uart无法显示结果。

u-boot移植(六)---代码修改---串口的更多相关文章

  1. -boot移植(十一)---代码修改---支持nandflash

    一.移植前的修改 1.1 include/configs/jz2440修改 原来的定义: 可以看出,要先定义CONFIG_CMD_NAND才能使能NANDFlash. 这个在我们文件中的82行有定义, ...

  2. u-boot移植(十二)---代码修改---支持DM9000网卡

    一.准备工作 1.1 原理图 CONFIG_DM9000_BASE 片选信号是接在nGCS4引脚,若要确定网卡的基地址,则要根据片选信号的接口去确定. 在三星2440的DATASHEET中memory ...

  3. Spring Boot入门(六):使用MyBatis访问MySql数据库(注解方式)

    本系列博客记录自己学习Spring Boot的历程,如帮助到你,不胜荣幸,如有错误,欢迎指正! 本篇博客我们讲解下在Spring Boot中使用MyBatis访问MySql数据库的简单用法. 1.前期 ...

  4. Spring Boot(十六):使用Jenkins部署Spring Boot

    Spring Boot(十六):使用Jenkins部署Spring Boot jenkins是devops神器,介绍如何安装和使用jenkins部署Spring Boot项目 jenkins搭建 部署 ...

  5. am335x UART1输入u-boot 调试信息代码修改

    AM335x 调试信息UART1输出代码修改1. 关于pin_mux  的配置代码修改位置:/board/forlinx/ok335x/mux.c void enable_uart0_pin_mux( ...

  6. spring boot / cloud (六) 开启CORS跨域访问

    spring boot / cloud (六) 开启CORS跨域访问 前言 什么是CORS? Cross-origin resource sharing(跨域资源共享),是一个W3C标准,它允许你向一 ...

  7. Spring Boot 2 (六):使用 Docker 部署 Spring Boot 开源软件云收藏

    Spring Boot 2 (六):使用 Docker 部署 Spring Boot 开源软件云收藏 云收藏项目已经开源3年多了,作为当初刚开始学习 Spring Boot 的练手项目,使用了很多当时 ...

  8. 【imx6ul应用开发】如何修改串口?

    4.1如何修改串口?答:开发板已经调好了串口驱动,调试串口,只需要修改dts文件即可,客户可以根据实际需要,确定硬件管脚具体用哪一个. 打开内核源代码/arch/arm/boot/dts/myb-y6 ...

  9. Android之vector代码修改颜色

    前言:google给了很多material design icon,在开发过程中,可以下载下来直接使用,下载地址为https://materialdesignicons.com/ . 1.下载图标,并 ...

随机推荐

  1. MyBatis是如何解决Sql注入的

    转:[转]mybatis如何防止sql注入 java中预处理PrepareStatement为什么能起到防止SQL注入的作用??!! 一.SQL注入 sql注入大家都不陌生,是一种常见的攻击方式,攻击 ...

  2. prettier & codes format

    prettier & codes format https://prettier.io/playground/ https://github.com/collections/front-end ...

  3. 信息安全与Linux系统

    相信很多小伙伴都看过黑客帝国里面的那些由代码组成的神奇界面,也有很多人也向往着有一天能做一个黑客,当然不是为了做坏事,只是想和电影里面的黑客一样拉风,我就是这么其中一个(假如有一天能实现这个愿望我想我 ...

  4. Linux 4.20内核得到更新,英特尔CPU 性能降低50%

    根据HKEPC的报道,Linux近日发布了 4.20 内核的一些漏洞修复更新,更新后可能会出现50% 的性能损失,是今年内所有安装Spectre/Meltdown 修补程式中效能跌幅最大的一次. 据报 ...

  5. linux-shell系列8 netstat用法

    1 查看TCP连接状态 netstat -n|awk '{print $6}'|sort|uniq -c|sort -rn netstat -n|awk '/^tcp/ {++S[$NF]};END{ ...

  6. Python爬虫:HTTP协议、Requests库

    HTTP协议: HTTP(Hypertext Transfer Protocol):即超文本传输协议.URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源. HTTP协议 ...

  7. 学习Spring Boot:(二十七)Spring Boot 2.0 中使用 Actuator

    前言 主要是完成微服务的监控,完成监控治理.可以查看微服务间的数据处理和调用,当它们之间出现了异常,就可以快速定位到出现问题的地方. springboot - version: 2.0 正文 依赖 m ...

  8. 【BZOJ2000】[HNOI2000]取石头游戏(贪心,博弈论)

    [BZOJ2000][HNOI2000]取石头游戏(贪心,博弈论) 题面 BZOJ 洛谷 题解 这题好神仙啊,窝不会QaQ. 假装一下只有三个元素\(a_{i-1},a_i,a_{i+1}\),并且满 ...

  9. SharePoint 2013 APP 开发示例 (六)服务端跨域访问 Web Service (REST API)

    上个示例(SharePoint 2013 APP 开发示例 (五)跨域访问 Web Service (REST API))是基于JavaScript,运行在web browser内去访问REST AP ...

  10. SharePoint 2013 APP 开发示例 (一)List 读写

    在这个示例里,我们将创建一个页面测试 SharePoint APP的权限.这个页面有二个按钮,一个从documents里读数据,一个往documents里写数据: 1. 打开Visual Studio ...