Chinaunix首页 | 论坛 | 博客
  • 博客访问: 150925
  • 博文数量: 49
  • 博客积分: 45
  • 博客等级: 民兵
  • 技术积分: 545
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-23 13:22
文章分类
文章存档

2017年(5)

2016年(18)

2015年(18)

2014年(8)

我的朋友

分类: Android平台

2014-12-21 17:13:22


1SecureCRT 7.1 终端无法接收键盘输入字符。


在会话选项中去掉RTC CTS  的勾选

 ====================================

2uboot 里面改变串口输出,把0改成3,在配置文件里改:

 #define CONFIG_SERIAL3     1

//#define CONFIG_SERIAL0 1


这里把串口1改成串口3,串口的硬件仍然接在串口上,改掉之后从新编译烧写,会打印出一串OOOOOOOOK ,然后就没有东西了,跟代码,在lowlevel_init.S (board\samsung\tiny4412) 进行串口初始化的时候,就决定了要初始化的串口控制器是哪一个,基地址S5PV310_UART_CONSOLE_BASE已经确定,但这里串口1却打印了,说明串口1被初始化,后面没东西了(经确认是系统死掉了),说明后面打印到串口3,而串口3没被初始化,故而死机。


为什么基地址仍然是串口1呢?估计是没有make distclean ,之前用make clean 不行,这汇编级的东西,有些没被clean 掉,最好make distclean ,然后再烧写就OK 了。这个问题搞了几个小时,悲剧。

原因找到了,因为tiny4412的板子,有个bl2,是从u-boot.bin 里面分出前面14K而生成的,make clean 并没有删除bl2 ,在烧写的脚本中有这么一句:${MKBL2} ${E4412_UBOOT} bl2.bin 14336 ,所以在烧写的时候,还是烧写的上一次的BL2镜像,而这其中包括了串口的初始化部分,所以就会出现上述的问题。

======================================
3,uboot 串口初始化源代码:
/*
 * uart_asm_init: Initialize UART in asm mode, 115200bps fixed.
 * void uart_asm_init(void)
 */
.globl uart_asm_init
uart_asm_init:


/* set GPIO to enable UART */
@ GPIO setting for UART for UART0/1/2/3
ldr r0, =0x11400000   // 看芯片datasheet 可知这几组GPIO可作为UART用,用以把uart控制器的信号发送出去或者接收到。
ldr r1, =0x22222222 // 配成0x2 即gpio 作为uart用能使用。
str r1, [r0]
ldr r0, =0x11400020// 另外从datasheet里面还能看到uart 功能有RTSn CTSn 与 TXD RXD两种功能。这两种功能的区别,以后再看。
ldr r1, =0x222222
str r1, [r0]


ldr r0, =S5PV310_CLOCK_BASE  // 配置时钟,选择时钟源
ldr r1, =CLK_SRC_PERIL0_VAL
ldr r2, =CLK_SRC_PERIL0_OFFSET
str r1, [r0, r2]
ldr r1, =CLK_DIV_PERIL0_VAL
ldr r2, =CLK_DIV_PERIL0_OFFSET // 设置分频系数
str r1, [r0, r2]


ldr r0, =S5PV310_UART_CONSOLE_BASE  // 选择要配置的串口,串口有1 2 3 4 个,这里基地址确认是哪一个,接下来只配置对应那个。
ldr r1, =0x111
str r1, [r0, #UFCON_OFFSET] // 配置接收buffer的大小 256K


mov r1, #0x3
str r1, [r0, #ULCON_OFFSET] // 配置每一帧数据的位数 8bit


ldr r1, =0x3c5
str r1, [r0, #UCON_OFFSET]


ldr r1, =UART_UBRDIV_VAL
str r1, [r0, #UBRDIV_OFFSET]


ldr r1, =UART_UDIVSLOT_VAL
str r1, [r0, #UDIVSLOT_OFFSET]


ldr r1, =0x4f4f4f4f
str r1, [r0, #UTXH_OFFSET] @'O' // 向buffer打印O


mov pc, lr
===========================================
2015.4.8 续

一个问题,一个新板子,输出是乱码,推测板子输出的波特率和PC上客户端接受的波特率不一样,用一个好板子来对比波形,发现好板子的波形要密一些,好板子波特率是115200,推测不知道波特率的
板子波特率要小一些,最终试出是57600 。

要注意的是,我们测量出的是比特率,不是波特率,但波特率比特率成正比。

=======================================

2016.9.14 续
明天是中秋节,明天天气应该不错,女朋友让我带她出去玩,我只希望别太晒,她暑假去了越南被晒黑了起码三个色号。

usb 转串口驱动,PL2303 win10 系统,插上去后提示黄标,于是我没有按照以前的套路去搜索什么驱动,很麻烦啊,我装了个鲁大师,然后驱动检测,然后驱动安装就OK 了。

============================================
Android系统内核打印级别调试:

cat /proc/sys/kernel/printk  然后直接echo 1 进去,把所有数字改成1。 没权限就su 一下。
echo "1 1 1 1" > /proc/sys/kernel/printk

======================================
Android打印某进程的log

logcat -s wpa_supplicant 

阅读(3708) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~