分类: Android平台
2014-12-21 17:13:22
1,SecureCRT 7.1 终端无法接收键盘输入字符。
在会话选项中去掉RTC CTS 的勾选
====================================
2,uboot 里面改变串口输出,把0改成3,在配置文件里改:
#define CONFIG_SERIAL3 1
//#define CONFIG_SERIAL0 1
这里把串口1改成串口3,串口的硬件仍然接在串口1 上,改掉之后从新编译烧写,会打印出一串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