X-006 FriendlyARM tiny4412 u-boot移植之Debug串口用起来
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
开发环境:win7 64位 + VMware12 + Ubuntu14.04 64位
工具链:linaro提供的gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-gnueabi
要移植的u-boot版本:u-boot-2016-11
Tiny4412开发板硬件版本为:
底板: Tiny4412/Super4412SDK 1506
核心板:Tiny4412 - 1412
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
在上一节我们初始化完成了exynos4412的时钟,接下来把tiny4412的debug串口用起来。
1、Tiny4412 debug 串口电路原理图
参考:Tiny4412SDK-1506-Schematic.pdf
Tiny4412-1412-Schematic.pdf
从原理图上我们可看出,tiny4412的debug串口使用的uart0.
2、uart0初始化步骤
1. 选择UART的时钟源
2.将所涉及的UART通道管脚设为UART功能
3. 设置波特率:UBRDIVn寄存器(UART BAUD RATE DIVISOR)、UFRACVALn寄存器
4. 设置传输格式:ULCONn寄存器(UART LINE CONTROL)
5. 设置UART工作模式:UCONn寄存器(UART CONTROL)
6. UFCONn寄存器(UART FIFO CONTROL)、UFSTATn寄存器(UART FIFO STATUS)
3、使用Tiny4412 Debug 串口uart0代码设置
diff --git a/arch/arm/dts/exynos4412-tiny4412.dts b/arch/arm/dts/exynos4412-tiny4412.dts index 8822d52..a467250 100644 --- a/arch/arm/dts/exynos4412-tiny4412.dts +++ b/arch/arm/dts/exynos4412-tiny4412.dts @@ -14,73 +14,16 @@ model = "Tiny4412 based on Exynos4412"; compatible = "samsung,tiny4412", "samsung,exynos4412"; - aliases { - i2c0 = "/i2c@13860000"; - i2c1 = "/i2c@13870000"; - i2c2 = "/i2c@13880000"; - i2c3 = "/i2c@13890000"; - i2c4 = "/i2c@138a0000"; - i2c5 = "/i2c@138b0000"; - i2c6 = "/i2c@138c0000"; - i2c7 = "/i2c@138d0000"; - serial0 = "/serial@13800000"; - console = "/serial@13810000"; - mmc2 = "/sdhci@12530000"; - mmc4 = "/dwmmc@12550000"; + chosen { + stdout-path = "serial0"; }; - i2c@13860000 { - samsung,i2c-sda-delay = <100>; - samsung,i2c-slave-addr = <0x10>; - samsung,i2c-max-bus-freq = <100000>; - status = "okay"; + aliases { + serial0 = "/serial@13800000"; + console = "/serial@13800000"; }; - serial@13810000 { + serial0:serial@13810000 { status = "okay"; }; - - sdhci@12510000 { - status = "disabled"; - }; - - sdhci@12520000 { - status = "disabled"; - }; - - sdhci@12530000 { - samsung,bus-width = <4>; - samsung,timing = <1 2 3>; - cd-gpios = <&gpk2 2 0>; - }; - - sdhci@12540000 { - status = "disabled"; - }; - - dwmmc@12550000 { - samsung,bus-width = <8>; - samsung,timing = <2 1 0>; - samsung,removable = <0>; - fifoth_val = <0x203f0040>; - bus_hz = <400000000>; - div = <0x3>; - index = <4>; - }; - - ehci@12580000 { - compatible = "samsung,exynos-ehci"; - reg = <0x12580000 0x100>; - #address-cells = <1>; - #size-cells = <1>; - phy { - compatible = "samsung,exynos-usb-phy"; - reg = <0x125B0000 0x100>; - }; - }; - - emmc-reset { - compatible = "samsung,emmc-reset"; - reset-gpio = <&gpk1 2 0>; - }; }; diff --git a/arch/arm/mach-exynos/lowlevel_init.c b/arch/arm/mach-exynos/lowlevel_init.c index 1e090fd..361727d 100644 --- a/arch/arm/mach-exynos/lowlevel_init.c +++ b/arch/arm/mach-exynos/lowlevel_init.c @@ -215,11 +215,17 @@ int do_lowlevel_init(void) if (actions & DO_CLOCKS) { system_clock_init(); + #ifdef CONFIG_DEBUG_UART #if (defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_SERIAL_SUPPORT)) || \ !defined(CONFIG_SPL_BUILD) + #ifdef TINY4412 + exynos_pinmux_config(PERIPH_ID_UART0, PINMUX_FLAG_NONE); + #else exynos_pinmux_config(PERIPH_ID_UART3, PINMUX_FLAG_NONE); + #endif debug_uart_init(); + printascii("UART DEBUG enable .... !!!\n\r"); #endif #endif mem_ctrl_init(actions & DO_MEM_RESET); diff --git a/configs/tiny4412_defconfig b/configs/tiny4412_defconfig index 93917b9..19d0dda 100644 --- a/configs/tiny4412_defconfig +++ b/configs/tiny4412_defconfig @@ -24,6 +24,16 @@ CONFIG_CMD_FS_GENERIC=y CONFIG_OF_CONTROL=y # +#DEBUG UART +# +CONFIG_DEBUG_UART=y +CONFIG_SPL_SERIAL_SUPPORT=y +CONFIG_SPL_GPIO_SUPPORT=y +CONFIG_DEBUG_UART_S5P=y +CONFIG_DEBUG_UART_BASE=0x13800000 +CONFIG_DEBUG_UART_CLOCK=100000000 + +# #NOTE:do not delete this: # # CONFIG_CMD_IMLS is not set |
编译下载代码到SD卡,从SD卡启动后,tiny4412开发板的com0串口上会输出如下调试字符串:
UART DEBUG enable .... !!!
后面移植调试u-boot SPL部分的代码时候,可以通过串口打印log的方式进行,比之前的点亮LED灯调试可以获取到更多信息。
参考
1、《Exynos 4412 SCP_Users Manual_Ver.0.10.00_Preliminary.pdf》
2、《嵌入式Linux系统开发完全手册_基于4412_上册.pdf》
3、uboot_tiny4412-20130729
4、Tiny4412裸机程序之UART收发数据 http://www.techbulo.com/1555.html
X-006 FriendlyARM tiny4412 u-boot移植之Debug串口用起来的更多相关文章
- X-009 FriendlyARM tiny4412 uboot移植之SD Card用起来Kernel boot起来
<<<<<<<<<<<<<<<<<<<<<<<<< ...
- X-004 FriendlyARM tiny4412 uboot移植之点亮指路灯
<<<<<<<<<<<<<<<<<<<<<<<<< ...
- X-003 FriendlyARM tiny4412 uboot移植之添加相应目录文件
X-003 FriendlyARM tiny4412 uboot移植之添加相应目录文件 <<<<<<<<<<<<<< ...
- X-007 FriendlyARM tiny4412 u-boot移植之内存初始化
<<<<<<<<<<<<<<<<<<<<<<<<< ...
- X-001 FriendlyARM Tiny4412 uboot移植前奏
版权声明:本文为博主原创文章,转载请注明出处 开发环境:win7 64位 + VMware12 + Ubuntu14.04 64位 工具链:linaro提供的gcc-linaro-6.1.1-2016 ...
- 基于tiny4412的u-boot移植(一)
作者信息 作者:彭东林 邮箱:pengdonglin137@163.com QQ: 405728433 平台介绍 开发环境:win7 64位 + VMware11 + Ubuntu14.04 64位 ...
- X-008 FriendlyARM tiny4412 uboot移植之copy u-boot到DDR内存
<<<<<<<<<<<<<<<<<<<<<<<<< ...
- X-010 FriendlyARM tiny4412 uboot移植之移植网卡驱动TFTP用起来
<<<<<<<<<<<<<<<<<<<<<<<<< ...
- X-005 FriendlyARM tiny4412 uboot移植之时钟初始化
<<<<<<<<<<<<<<<<<<<<<<<<< ...
随机推荐
- SQLite错误总结 error code 19: constraint failed
SQLite错误总结 1. android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed错误原 ...
- oracle10g遇到ORA-00257归档程序错误,在释放之前仅限于内部连接
一.简要介绍 首先数据库日志文件有两种: 联机日志文件和归档日志文件,联机日志文件会将之前的覆盖,不会做备份. 而归档日志文件会做备份,这样就造成了归档日志空间已满,解决方法: 如果真的是归档日志空间 ...
- gameUnity 0.2 网络游戏框架(计划)
能说的就是 请大家都耐心等待,不做国产垃圾,只追求国外经典,这就是 这套框架未来的发展 一:2d 3d场景融合 人物移动 2d 3d 层 移动 有差值(共6层,2d天空层.前景3d物体层有 景深), ...
- Python 文件Hash(MD5,SHA1)
import hashlib import os,sys def CalcSha1(filepath): with open(filepath,'rb') as f: sh ...
- HDU2216:Game III(BFS)
Game III Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Subm ...
- CSS3简介
选择器 盒模型 背景和边框 文字特效 2d/3d转换 动画 多列布局 用户界面
- Extjs 4.1 struts2.3 返回json 初试
之前曾经使用过3.x版本的extjs,当时可以结合struts实现各种基本的增删查改.但是4.1版本中增加了一些属性,出现了一些新的使用方法,导致错误不断,有的时候调用到相应的action却返回不了值 ...
- Android自定义属性,format详解
1. reference:参考某一资源ID. (1)属性定义: <declare-styleable name = "名称"> <attr name = &quo ...
- C# 上传文件至远程服务器
C# 上传文件至远程服务器(适用于桌面程序及web程序) 2009-12-30 19:21:28| 分类: C#|举报|字号 订阅 最近几天在玩桌面程序,在这里跟大家共享下如何将本地文件上传 ...
- sqlserver2008用bat脚本备份时报错因为库名有中横杠【原创】
提示原因是数据库名字有中横岗“-” 解决方法:用中括号把名字括起来就可以了 call :backupone [数据库名-new] 完整备份脚本如下 @ECHO ON set DATE=%date:/= ...