ImageVerifierCode 换一换
格式:DOC , 页数:4 ,大小:28KB ,
资源ID:6211545      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-6211545.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(linux输出信息重定向.doc)为本站会员(gnk289057)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

linux输出信息重定向.doc

1、重定向linux 输出信息(linux2.6 )在运行linux的时候有所有的调试信息可以分为三个部分1、 bootloader输出信息U-Boot (Nov 19 2016 - 22:02:08)DRAM: 64 MBFlash: 512 kBNAND: 64 MiBIn: serialOut: serialErr: serialHit any key to stop autoboot: 0 yqliu2410 # tftpFound DM9000 ID:46 at address 10000000 !DM9000 work in 16 bus widthbd-bi_entaddr: 08:

2、00:3e:26:5beth_initMAC:8:0:3e:26:a:5b:TFTP from server 192.168.1.152; our IP address is 192.168.1.155Filename uImage.Load address: 0x30008000Loading: T T T T #doneBytes transferred = 1617316 (18ada4 hex)up-tech2410 # bootm# Booting image at 30008000 .Image Name: Linux-.4Created: 2016-11-19 14:05:29

3、UTCImage Type: ARM Linux Kernel Image (uncompressed)Data Size: 1617252 Bytes = 1.5 MBLoad Address: 30008000Entry Point: 30008040Verifying Checksum . OKStarting kernel .2、 linux低级调试信息输出Uncompressing Linux. done, booting the kernel.3、 linux调试信息输出Linux version .4 (rootvm-dev) (gcc version 3.4.6) #100 S

4、at Nov 19 07:47:35 CST 2016CPU: ARM920T 41129200 revision 0 (ARMv4T), cr=00007177Machine: SMDK2410Memory policy: ECC disabled, Data cache writebackCPU S (id 0x32410002)S2410: core 202.800 MHz, memory 101.400 MHz, peripheral 50.700 MHzS24XX Clocks, (c) 2004 Simtec ElectronicsCLOCK: Slow mode (1.500 M

5、Hz), fast, MPLL on, UPLL onCPU0: D VIVT write-back cacheCPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 setsCPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 setsBuilt 1 zonelists in Zone order, mobility grouping on. Total pages: 16256Kernel command line: root=/dev/mtdblo

6、ck2 noinitrd console=ttySAC1,115200irq: clearing subpending status 00000010PID hash table entries: 256 (order: 8, 1024 bytes)timer tcon=00500000, tcnt a509, tcfg 00000200,00000000, usec 00001eConsole: colour dummy device 80x30console ttySAC1 enabledDentry cache hash table entries: 8192 (order: 3, 32

7、768 bytes)Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)Memory: 64MB = 64MB totalMemory: 61488KB available (2936K code, 305K data, 132K init)Mount-cache hash table entries: 512CPU: Testing write buffer coherency: ok现在要将所有的调试信息输出到别的串口。以com1为例(从com0开始计算)!一、将bootloader的输出信息输出到com1这里以u-boo

8、t为例:很简单只需要修改一个宏定义就 okVi inlcude/configs/xxxconfig.h(xxx为你定义的开发板的名字 )更改原有的宏/* select serial console configuration*/#define CONFIG_SERIAL1 1 /* we use SERIAL 1 on SMDK2410 */modify for xxx2410/by lyj_uptech#define CONFIG_SERIAL2 1 /* we use SERIAL 2 on SMDK2410 */更改完之后就可以看到u-boot的调试信息输出到com1, 这一步很简单。二

9、、将low_level 的调试信息输出到com1在改之前我们先分析一下在linux启动之前它是如何使用串口的。1、 在arch/arm/boot/compressed/misc.c文件中有定义static void putstr(const char *ptr)char c;while (c = *ptr+) != 0) if (c = n) putc(r);putc(c); flush();2、 arch/arm/boot/compressed/misc.中的函数decompress_kernel就是使用的putstr来打印的如下输出信息:Uncompressing Linux. done,

10、 booting the kernel.3、 追根溯源,putstr函数最终调 用的是putc(请注意这里的putc 不是在misc.c 函数中定义的icedcc_putc,因为没有CONFIG_CPU_V6宏定义),真正的底层操作在文件include/asm-arm/plat-s3c/uncompress.h4、 解析该文件/* we can deal with the case the UARTs are being run* in FIFO mode, so that we dont hold up our execution* waiting for tx to happen.*/st

11、atic void putc(int ch)if (uart_rd(S2410_UFCON) while (1) level = uart_rd(S2410_UFSTAT);level if (level fifo_max)break; else /* not using fifos */while (uart_rd(S2410_UTRSTAT) /* write byte to transmission register */uart_wr(S2410_UTXH, ch);该函数中调用的两个函数,uart_rd uart_wr在同一个文件中定义#define uart_base S24XX_

12、PA_UART + (0x4000*CONFIG_S_LOWLEVEL_UART_PORT)static _inline_ voiduart_wr(unsigned int reg, unsigned int val)volatile unsigned int *ptr;ptr = (volatile unsigned int *)(reg + uart_base);*ptr = val;static _inline_ unsigned intuart_rd(unsigned int reg)volatile unsigned int *ptr;ptr = (volatile unsigned

13、 int *)(reg + uart_base);return *ptr;从宏定义uart_base 中就可以清楚的看到,当CONFIG_S3C_LOWLEVEL_UART_PORT 为0时,uart_base的 值为0x50000000,也就是uart0 的控制寄存器基地址。如果要使用uart1的话就把CONFIG_S3C_LOWLEVEL_UART_PORT赋值为1就可以了。5、 正真更改的地方只有一个下级目录修改为1就ok!6、 需要注意的地方(你使用的串口初始化了么)我在整个内核中找遍了解压内核之前运行的代码,都找不到关于串口初始化的代码。所以说,linux在启动之前的串口初始化是依赖

14、bootloader的,要想正常的输出,就必须使用你的bootloader使用的串口,因为在bootloader 中进行了对要使用的串口进行了初始化。要保证你的bootloader兼容性很好,那就在bootloader 中把所有的串口都初始化一遍。如果你没有初始化串口,一旦调用putstr,程序就死掉了!三、将linux的信息输出到com1将linux运行的信息输出到com1就太简单了,直接到bootloader里面改linux的传递参数就可以了。setenv bootargs root=/dev/mtdblock2 noinitrd console=ttySAC1,115200saveenv现在启动一切ok!感谢yqliu的支持,没有他的调试程序,我始 终的无法知道 linux的内核是否正确调用,也无法定位问题!这里附上他给我的程序(这里的三个灯分别对应的io 管脚是 GPF )#if 0asm volatile( “ldr r6, =0x5400nr“ldr r7, =0x56000020nr“str r6, r7nr“ldr r6, =0xC0nr“ldr r7, =0x56000024nr“str r6, r7“);#endif全文完http:/

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报