



全文預(yù)覽已結(jié)束
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
重定向linux輸出信息(linux2.6)在運(yùn)行l(wèi)inux的時(shí)候有所有的調(diào)試信息可以分為三個(gè)部分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:00:3e:26:5beth_initMAC:8:0:3e:26:a:5b:TFTP from server 52; our IP address is 55Filename uImage.Load address: 0x30008000Loading: T T T T # #doneBytes transferred = 1617316 (18ada4 hex)up-tech2410 # bootm# Booting image at 30008000 . Image Name: Linux-.4 Created: 2016-11-19 14:05:29 UTC Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1617252 Bytes = 1.5 MB Load Address: 30008000 Entry Point: 30008040 Verifying Checksum . OKStarting kernel .2、 linux低級(jí)調(diào)試信息輸出Uncompressing Linux. done, booting the kernel.3、 linux調(diào)試信息輸出Linux version .4 (rootvm-dev) (gcc version 3.4.6) #100 Sat 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 MHz), 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/mtdblock2 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, 32768 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.現(xiàn)在要將所有的調(diào)試信息輸出到別的串口。以com1為例(從com0開(kāi)始計(jì)算)!一、將bootloader的輸出信息輸出到com1這里以u(píng)-boot為例:很簡(jiǎn)單只需要修改一個(gè)宏定義就okVi inlcude/configs/xxxconfig.h(xxx為你定義的開(kāi)發(fā)板的名字)更改原有的宏/* 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的調(diào)試信息輸出到com1,這一步很簡(jiǎn)單。二、將low_level 的調(diào)試信息輸出到com1在改之前我們先分析一下在linux啟動(dòng)之前它是如何使用串口的。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.中的函數(shù)decompress_kernel就是使用的putstr來(lái)打印的如下輸出信息:Uncompressing Linux. done, booting the kernel.3、 追根溯源,putstr函數(shù)最終調(diào)用的是putc(請(qǐng)注意這里的putc不是在misc.c函數(shù)中定義的icedcc_putc,因?yàn)闆](méi)有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.*/static void putc(int ch) if (uart_rd(S2410_UFCON) & S2410_UFCON_FIFOMODE) int level; while (1) level = uart_rd(S2410_UFSTAT); level &= fifo_mask; if (level fifo_max) break; else /* not using fifos */ while (uart_rd(S2410_UTRSTAT) & S2410_UTRSTAT_TXE) != S2410_UTRSTAT_TXE) barrier(); /* write byte to transmission register */ uart_wr(S2410_UTXH, ch);該函數(shù)中調(diào)用的兩個(gè)函數(shù),uart_rd uart_wr在同一個(gè)文件中定義#define uart_base S24XX_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 int *)(reg + uart_base); return *ptr;從宏定義uart_base中就可以清楚的看到,當(dāng)CONFIG_S3C_LOWLEVEL_UART_PORT為0時(shí),uart_base的值為0x50000000,也就是uart0的控制寄存器基地址。如果要使用uart1的話就把CONFIG_S3C_LOWLEVEL_UART_PORT賦值為1就可以了。5、 正真更改的地方只有一個(gè)下級(jí)目錄修改為1就ok!6、 需要注意的地方(你使用的串口初始化了么)我在整個(gè)內(nèi)核中找遍了解壓內(nèi)核之前運(yùn)行的代碼,都找不到關(guān)于串口初始化的代碼。所以說(shuō),linux在啟動(dòng)之前的串口初始化是依賴bootloader的,要想正常的輸出,就必須使用你的bootloader使用的串口,因?yàn)樵赽ootloader中進(jìn)行了對(duì)要使用的串口進(jìn)行了初始化。要保證你的bootloader兼容性很好,那就在bootloader中把所有的串口都初始化一遍。如果你沒(méi)有初始化串口,一旦調(diào)用putstr,程序就死掉了!三、將linux的信息輸出到com1將linux運(yùn)行的信息輸出到com1就太簡(jiǎn)單了,直接到bootloader里面改linux的傳遞參數(shù)就可以了。setenv bootargs root=/dev/mtdblock2 noinitrd console=ttySAC1,115200saveenv現(xiàn)在啟動(dòng)一切ok!感謝yqliu的支持,沒(méi)有他的調(diào)試程序,我始終的無(wú)法知道linux的內(nèi)核是否正確調(diào)用
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 304鋼水箱施工方案
- 小學(xué)課本劇《巨人的花園》-劇本
- 教師安全知識(shí)培訓(xùn)課件
- 江蘇省無(wú)錫市長(zhǎng)涇片重點(diǎn)名校2025屆中考生物猜題卷含解析
- 臨時(shí)導(dǎo)游聘用合同范例
- 供配電安裝合同范例
- 單位內(nèi)部組織合同范例
- 供貨訂貨合同范例
- 倉(cāng)庫(kù)財(cái)務(wù)成本控制方案計(jì)劃
- 常規(guī)班級(jí)活動(dòng)的周期性評(píng)估計(jì)劃
- 建筑垃圾處理及清運(yùn)方案
- 流浪犬收容管理服務(wù)方案
- 全國(guó)高中青年數(shù)學(xué)教師優(yōu)質(zhì)課大賽一等獎(jiǎng)《導(dǎo)數(shù)在研究函數(shù)中的應(yīng)用》課件
- 礦山巖石力學(xué)教案
- 【海馬汽車企業(yè)營(yíng)運(yùn)能力問(wèn)題及解決策略(論文10000字)】
- 永安電力股份有限公司三臺(tái)縣凱河110千伏輸變電新建工程環(huán)評(píng)報(bào)告
- 口腔頜面外科基礎(chǔ)知識(shí)與基本操作-口腔頜面外科手術(shù)基本操作(口腔頜面外科課件)
- 學(xué)院(校)食堂餐飲企業(yè)承包經(jīng)營(yíng)退出管理制度
- 急危重癥護(hù)理學(xué)3
- API520-安全閥計(jì)算PART1(中文版)
- 本科畢設(shè)論文--企業(yè)vpn的接入規(guī)劃與設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論