<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 

开发环境: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串口用起来的更多相关文章

  1. X-009 FriendlyARM tiny4412 uboot移植之SD Card用起来Kernel boot起来

    <<<<<<<<<<<<<<<<<<<<<<<<< ...

  2. X-004 FriendlyARM tiny4412 uboot移植之点亮指路灯

    <<<<<<<<<<<<<<<<<<<<<<<<< ...

  3. X-003 FriendlyARM tiny4412 uboot移植之添加相应目录文件

    X-003 FriendlyARM tiny4412 uboot移植之添加相应目录文件 <<<<<<<<<<<<<< ...

  4. X-007 FriendlyARM tiny4412 u-boot移植之内存初始化

    <<<<<<<<<<<<<<<<<<<<<<<<< ...

  5. X-001 FriendlyARM Tiny4412 uboot移植前奏

    版权声明:本文为博主原创文章,转载请注明出处 开发环境:win7 64位 + VMware12 + Ubuntu14.04 64位 工具链:linaro提供的gcc-linaro-6.1.1-2016 ...

  6. 基于tiny4412的u-boot移植(一)

    作者信息 作者:彭东林 邮箱:pengdonglin137@163.com QQ: 405728433 平台介绍 开发环境:win7 64位 + VMware11 + Ubuntu14.04 64位 ...

  7. X-008 FriendlyARM tiny4412 uboot移植之copy u-boot到DDR内存

    <<<<<<<<<<<<<<<<<<<<<<<<< ...

  8. X-010 FriendlyARM tiny4412 uboot移植之移植网卡驱动TFTP用起来

    <<<<<<<<<<<<<<<<<<<<<<<<< ...

  9. X-005 FriendlyARM tiny4412 uboot移植之时钟初始化

    <<<<<<<<<<<<<<<<<<<<<<<<< ...

随机推荐

  1. webservice接口调用存储过程返回失败

    poka.cashman.timer.service.impl.PdaOperateServiceImpl - Method Name: cashBoxOutOrIn; cbInfo:JN002015 ...

  2. java 随机流

    Example10_8.java import java.io.*; public class Example10_8 { public static void main(String args[]) ...

  3. sql 语句操作

    插入:insert into table1(field1,field2) values(value1,value2) db.execSQL(sql) db.execSQL(sql, bindArgs) ...

  4. 我终于有案例库啦(github 提供的)

    穷逼一个,一直在纠结要不要买个服务器什么的. 后来在慕课网看 git 教程时看到 github 可以帮你展示网页哟,于是我便有了这个案例库. 网址:https://foreverz133.github ...

  5. dev GridControl直接打印 纵向合并单元格

    GridControl纵向合并单元格 只需设置 gridView->OptionView->AllowCellMerge=true; 效果 提示: 精确到列 前提是gridview1已经允 ...

  6. HTTP代理浅说

    简单的说HTTP代理就是处于HTTP客户端和服务器端之间,中转消息的中间人. 一种代理是代客户端去请求服务器,叫做Forward Proxy正向代理:另一种是代理真正的服务器来接收用户请求,叫做Rev ...

  7. 【使用Itext处理PDF文档(新建PDF文件、修改PDF文件、PDF中插入图片、将PDF文件转换为图片)】

    iText简介 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...

  8. hadoop伪分布式安装

    hadoop的伪分布安装:一台实体机或虚拟机的安装. 环境:Windows7.VMWare.CentOS 1.1 设置ip地址 说明:在CentOS中的网络的类型: 仅主机模式:虚拟机在Windows ...

  9. ubuntu ssh重启

    SSH分客户端openssh-client和openssh-server 如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudo apt-g ...

  10. java HTTP请求 DefaultHttpClient is deprecated

    最近在使用Apache的httpclient的时候,maven引用了最新版本4.3,发现Idea提示DefaultHttpClient等常用的类已经不推荐使用了,之前在使用4.2.3版本的时候,还没有 ...