将JZ2440调试串口改成COM2
来源:互联网 发布:河源优化公司 编辑:程序博客网 时间:2024/05/21 20:30
众所周知,JZ2440 V2很小巧,精致。今天单就JZ2440的串口来讨论一些问题。我们在用串口进行调试的时候,需要用JZ2440自带的一根USB线连接电脑USB口和开发板的USB-com1口。先来看一下JZ2440的串口大致连接图:
从S3C2440芯片上引出TXD0和RXD0到芯片PL2303,大家都知道PL2303是干嘛用的。在单片机开发板上一般都用这个芯片,它的作用就是USB转TTL电平,经过PL2303的转换之后,电脑和开发板即可通信,设置好参数后也就能够显示出开发板的打印信息了。JZ2440在这一点上还有一处可以说说,就是它没有使用其他品牌开发板常用的RS232 DB9接口,这在很大程度上减小了开发板的体积,同时也节减了USB转串口线的花费,可谓一举两得。其他开发板一般是使用哪种接口呢?如下图所示:
其串口工作原理也是一样的,只是接口不同而已,这里也有一个图示:
搞懂了串口工作时的连线图之后就可以在此基础上进行修改,以便解决实际使用中遇到的问题。问题马上就来了,在用JZ2440开发时,串口是在SecureCRT上输出信息的。在输出信息时,偶尔会使电脑蓝屏。这种情况多发生在有大量数据要显示的时候,比如开机后,执行命令ls -l /dev 可能就会导致电脑蓝屏。于是我将系统换为XP,用了一段时间,没有出现蓝屏,所以应该是驱动的原因。由于使用习惯的问题,随后我的系统从XP升级到了Win7 ,Win8 ,Win8.1 .在使用JZ2440时,又频繁地出现了蓝屏问题,并且这个PL2303的驱动就像DNW的驱动一样,特别难安装。不过最终驱动还是装上了,驱动日期是2010/10/7 ,这个时间点之后的PL2303装上之后无法使用。这个问题苦恼了很久,经常蓝屏,严重影响开发效率,并且蓝屏之后电脑很久之后才能启动,甚是不爽。细细想来,这个问题的并不是由于JZ2440板子的问题,只是因为系统原因,
对PL2303芯片的支持不是很到位。为了解决这个问题,我想弃用板子自带的调试串口。毕竟板子上还扩展有三个TTL串口可以用嘛。理论上没有
理由不行啊,所以打算尝试一下。我又仔细的看了一下JZ2440的原理图,发现了下面的连线图:
有三个TTL串口可供选择,但是com1接口与USB-COM1来同一处,所以避免不必要的麻烦,我打算使用com2来充当调试串口。如果直接在
电脑与开发板之间接一条线是肯定不行的。原因很简单嘛,电平不一样,两者是无法通信的。仿照原有电路,我找到了下面的几个设备:
有了这两个设备不就成了?另外一路调试串口呼之欲出。但是这也只是硬件上的连线而已,下面是软件部分的修改(需要重新编译uboot和内核):1.首先修改的是uboot部分,修改文件uboot/include/configs/100ask24xx.h ,根据具体的板子找对应的文件即可。
①
#define CONFIG_SERIAL1 1
改为
#define CONFIG_SERIAL2 1
修改这一处,目的是告诉bootloader, 系统启动时要把bootloader的调试信息输出到串口 com2 上。那到底哪些才是bootloader的调试信息呢?在下面:
U-Boot 1.1.6 (Sep 19 2014 - 22:44:53)DRAM: 64 MBFlash: 2 MBNAND: 256 MiBIn: serialOut: serialErr: serialUPLLVal [M:38h,P:2h,S:2h]MPLLVal [M:5ch,P:1h,S:1h]CLKDIVN:5h+---------------------------------------------+| S3C2440A USB Downloader ver R0.03 2004 Jan |+---------------------------------------------+USB: IN_ENDPOINT:1 OUT_ENDPOINT:3FORMAT: <ADDR(DATA):4>+<SIZE(n+10):4>+<DATA:n>+<CS:2>NOTE: Power off/on or press the reset button for 1 sec in order to get a valid USB device address.Hit any key to stop autoboot: 0 Booting Linux ...NAND read: device 0 offset 0x60000, size 0x400000Reading data from 0x45f800 -- 100% complete.4194304 bytes read: OK## Booting image at 30007fc0 ... Image Name: Linux-3.4.2 Created: 2014-09-19 15:10:15 UTC Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 2439664 Bytes = 2.3 MB Load Address: 30008000 Entry Point: 30008000 Verifying Checksum ... OK XIP Kernel Image ... OKStarting kernel ...
到这里,uboot的调试信息打印结束,下面就把所有任务交内核了。有的同学编译好内核,启动时,卡死在这里,只能说明,你的uboot是正常的,内核是否正常就不得而知了。要想判断内核是否正常,可以查看一下内核打印出来的调试信息。
②
#define CONFIG_BOOTARGS "noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0"
改为
#define CONFIG_BOOTARGS "noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC1"
大家都知道这个参数是传递给内核的,所以修改本处,是告诉内核要把内核的调试信息输出到串口 com2 上。
2.修改内核部分,修改文件linux/.config ,没错,这个就是执行 make menuconfig 之后生成的配置文件,我们直接修改它即可。
①为了简单,我直接修改文件,不再演示图形界面了。
CONFIG_S3C_LOWLEVEL_UART_PORT=0
改为
CONFIG_S3C_LOWLEVEL_UART_PORT=1
修改此处是让内核输出低级调试信。说明一下,低级调试信息就是这一句:
Uncompressing Linux……………………………………………………. done, booting the kernel.
②CONFIG_DEBUG_S3C_UART=0
改为
CONFIG_DEBUG_S3C_UART=1
这是告诉Linux系统,要把调试信息输出到串口2上面。有了这一句,你就会看到很多的调试信息,系统启动时,大部分的输出信息都来自这一配置。
以上4点修改完成后,重新编译uboot和内核,重新烧写,启动。好了,串口就修改成功了。如果上面4点没有全部修改,则可能出现下面的情况:
uboot的信息在com1上面显示,内核的信息则在com2上显示,这是我曾遇到过的。
- 将JZ2440调试串口改成COM2
- 【教程】将JZ2440的调试串口换成com2
- 将uboot的调试串口和内核到调试串口由COM1改为COM2
- s3c2410调试串口改成普通串口
- COM1和COM2口通信 串口通信
- JZ2440:uart 串口
- JZ2440 串口分析
- 如何把wince Sate210 的调试串口(com3-uart2)改成普通串口
- wince Sate210 的调试串口(com3-uart2)改成普通串口
- JZ2440学习笔记,第一部分,移植uboot2015支持JZ2440串口
- mini2440 串口1通信串口改调试串口及6410将com0修改为普通串口
- 将NAN 改成 1,有的时候改成 0
- 在linux下如何将ttyS0改成别的号,比如ttyS4什么的,我的系统只有一个串口。
- 将调试串口作为普通串口使用(仅限于调试、测试)
- COM1 COM2
- 调试jz2440生成特定后缀的命令
- 将表改成uft-8
- 将html网页改成jsp
- IB_DESIGNABLE(@IBDesignable)中[UIImage imageNamed:]的加载不成功问题
- Es6 中 export和import详解
- (12):考虑实现Comparable接口
- FeatureLayer读取属性字段值
- virtualenv搭建虚拟环境
- 将JZ2440调试串口改成COM2
- Codeforces 148D Bag of mice(概率DP入门)
- 类加载机制(类加载过程和类加载器)
- mysql嵌套查询
- EditText只能输入2位小数及一个小数点
- 谭浩强 C++ 类和对象
- 看板与Scrum
- java使用phantomJs抓取动态页面
- Android 校验IP的正则表达式