专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
TI
修改UBOOT和LINUX调试串口(TI达芬奇芯片--DM6467)
2019-07-27 17:18
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
4583
13
1772
1.1 概述
TI针对DM6467提供的UBOOT和内核默认都是串口0作为调试串口输出的,但现在我需要使用DM6467的UART0的modem功能,所以修改代码,改变调试串口为串口2。
需要修改的主要有几部分内容:
1. UBL 代码(这部分代码在刚上电的时候,初始化CPU和拷贝UBOOT到DDR,打印信息只有很少,所以不做修改)。
2. UBOOT代码。
3. linux内核驱动。
使用的代码及版本请参考:
http://processors.wiki.ti.com/index.php/DaVinci_PSP_03.01_Beta_(r31)_Release_Notes
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
白丁野老
1楼-- · 2019-07-28 09:53
3.1 修改内核调试串口
3.1.1 内核解压输出信息
内核解压时使用的串口驱动是独立于UBOOT或内核的串口驱动的,解压时输出的打印信息的相关的代码在/arch/arm/mach_davinci/include/mach/uncompress.h内。这里的串口输出代码很简单,只是往数据寄存器写数据,并没有对串口进行相关的配置,所以这里串口的正常输出需要依赖UBOOT对串口的正确配置。
加载中...
白丁野老
2楼-- · 2019-07-28 11:44
精彩回答 2 元偷偷看……
加载中...
白丁野老
3楼-- · 2019-07-28 16:03
3.1.2 修改内核驱动,改变内核调试串口
因为内核启动时会对上面提到的几个寄存器作修改,所以需要修改/arch/arm/mach_davinci/board_dm646x_evm.c文件来确认2.1提到的寄存器的配置,同时需要使能UART1或UART2的时钟,默认情况下是只使能UART0的时钟。内核串口驱动就不需要修改了,因为也是16550的驱动,这份驱动也没有去配置串口的工作模式,所以UBOOT里配置了寄存器就行了,除非你想确认寄存器的配置,防止启动内核时寄存器被修改了或想控制串口的工作模式。
使能UART1/2时钟:
1 static struct davinci_uart_config uart_config __initdata = {
2
3 .enabled_uarts = (1 << 0)|(1 << 1)|(1 << 2),
4
5 };
复制代码
加载中...
白丁野老
4楼-- · 2019-07-28 22:01
重新编译内核,启动UBOOT,修改内核启动参数:
setenv bootargs mem=76M console=ttyS2,115200n8 ip=192.168.15.23 root=/dev/nfs rw nfsroot=192.168.15.48:/home/jamie/dvsdk/filesysmin
复制代码
下载内核,启动~~顺利的话就可以在UART2上输出系统的调试信息了:
Uncompressing Linux.......................................................................................................................... done, booting the kernel.
Linux version 2.6.32-rc2-davinci1 (root@ubuntuSv) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203) ) #107 PREEMPT Tue Oct 25 08:04:49 UTC 2011
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
CPU: VIVT data cache, VIVT instruction cache
Machine: ZMV-6467
Memory policy: ECC disabled, Data cache writeback
DaVinci dm6467_rev3.x variant 0x1
复制代码
加载中...
天灵灵地灵灵
5楼-- · 2019-07-28 23:28
在UBOOT里涉及到上面几个寄存器的配置的是在dm6467_evm.c的初始化部分
达芬奇的芯片在视频应用很多的,监控系统常用。
加载中...
yiyigirl2014
6楼-- · 2019-07-28 23:33
/* Enable USB */
37 REG(PINMUX0) &= ~(0x80000000);
原来这样就可以使能USB了。
加载中...
上一页
1
2
3
下一页
一周热门
更多
>
相关问题
CPLD的方波输出
4 个回答
11个版本Quartus II 软件下载,安装包网盘合集,附教程,47G!
20 个回答
请大家帮忙到21IC发展大家谈支持我申请新版面
20 个回答
【通知】21ic中国电子网服务条款 (所有人员必读)
1 个回答
满载而归乙亥年,大展鸿途庚子年---集签赢好礼
20 个回答
携手ADI,踏上电子工程师之巅—车辆电气化视频,答题领奖!
1 个回答
如何提升论坛质量,看你了!
20 个回答
【最终名单】二姨家喊你来拿100份新年大礼啦~
20 个回答
相关文章
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
TI
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
3.1.1 内核解压输出信息
内核解压时使用的串口驱动是独立于UBOOT或内核的串口驱动的,解压时输出的打印信息的相关的代码在/arch/arm/mach_davinci/include/mach/uncompress.h内。这里的串口输出代码很简单,只是往数据寄存器写数据,并没有对串口进行相关的配置,所以这里串口的正常输出需要依赖UBOOT对串口的正确配置。
因为内核启动时会对上面提到的几个寄存器作修改,所以需要修改/arch/arm/mach_davinci/board_dm646x_evm.c文件来确认2.1提到的寄存器的配置,同时需要使能UART1或UART2的时钟,默认情况下是只使能UART0的时钟。内核串口驱动就不需要修改了,因为也是16550的驱动,这份驱动也没有去配置串口的工作模式,所以UBOOT里配置了寄存器就行了,除非你想确认寄存器的配置,防止启动内核时寄存器被修改了或想控制串口的工作模式。
使能UART1/2时钟:
- 1 static struct davinci_uart_config uart_config __initdata = {
- 2
- 3 .enabled_uarts = (1 << 0)|(1 << 1)|(1 << 2),
- 4
- 5 };
复制代码- setenv bootargs mem=76M console=ttyS2,115200n8 ip=192.168.15.23 root=/dev/nfs rw nfsroot=192.168.15.48:/home/jamie/dvsdk/filesysmin
复制代码下载内核,启动~~顺利的话就可以在UART2上输出系统的调试信息了:
- Uncompressing Linux.......................................................................................................................... done, booting the kernel.
- Linux version 2.6.32-rc2-davinci1 (root@ubuntuSv) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203) ) #107 PREEMPT Tue Oct 25 08:04:49 UTC 2011
- CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
- CPU: VIVT data cache, VIVT instruction cache
- Machine: ZMV-6467
- Memory policy: ECC disabled, Data cache writeback
- DaVinci dm6467_rev3.x variant 0x1
复制代码达芬奇的芯片在视频应用很多的,监控系统常用。
37 REG(PINMUX0) &= ~(0x80000000);
原来这样就可以使能USB了。
一周热门 更多>