原创 .initcall##level##.init
//-----------------------kernel/init/main.c static void __init do_initcall_level(int level) { extern const struct ker
原创 .init.setup 位置
在內核裏經常可以看到__init,__devinit這樣的語句,這都是在init.h中定義的宏,gcc在編譯時會將被修飾的內容放到這些宏所代表的section。 其典型的定義如下: #define __init __sect
原创 dts加載流程
boot_linux_from_mmc |-> dt_table_offset=((uint32_t)image_addr+page_size+kernel_actual_ramdisk_actual+second_actu
原创 cmdline值
[1380] cmdline: console=ttyHSL0,115200,n8androidboot.console=ttyHSL0 androidboot.hardware=qcom msm_rtb.filter=0x237ehci
原创 Android啓動流程 -- linux kernel
linux啓動 一、zImage是怎樣煉成的? zImage是linux內核編譯之後產生的最終文件,它的生成過程比較複雜,這裏不談編譯過程,只聊聊編譯的最後階段: 1. arm-linux-gnu-ld用arc
原创 early_param流程
Linux內核源碼中多處會看到諸如__init,__initdata,__exitdata的關鍵字, 大部分這樣的關鍵字定義在include/linux/init.h頭文件中,它們都會在編譯連接階段被實現處理。 #define __i
原创 Device Tree起源
1. ARM Device Tree起源 LinusTorvalds在2011年3月17日的ARM Linux郵件列表宣稱“this whole ARM thing is a f*cking pain inthe ass”,引發ARM
原创 MACHINE_START與MACHINE_END
在移植Linux時,有個結構體需要填寫,它以MACHINE_START開始並以MACHINE_END結束,如下mini2440開發板的移植爲示例 [cpp] view plain copy MACHINE_START(MINI244
原创 Start_kernel中的參數
[ 0.000000]@0 zll----early=0,str=rdinit= [ 0.000000]@0 zll----early=0,str=init= [ 0.000000]@0 zll----early=1,s
原创 (DT系列二)device tree的書寫規範
devicetree的書寫規範 下面從節點,屬性,reg,ranges,中斷控制器等幾個方面敘述devicetree的書寫規範。 1,dts的基本元素:節點 .dts(或者其include的.dtsi)基本元素爲結點和屬性。舉例說明
原创 msm_pinctrl.txt
MSM TLMM pinmuxcontroller Qualcomm MSMintegrates a GPIO and Pin mux/config hardware, (TOP Level Mode Multiplexer in s
原创 Uart-log-ALL
[156940] fastboot: download:009ead28 [158410] fastboot: flash:boot [158410] boot is not yl image [158610] fastboot:
原创 Linux內核中的初始化initcall_t
基於Linux 2.6.32 include\asm-generic\Vmlinux.lds.h中有如下定義: 這等於是安排了名稱如.initcall<level>[s].init的一系列section的順序,level越小,越靠前。 符
原创 cmdline傳遞
uboot向kernel的傳參機制——bootm與tags 一uboot 如何啓動 kernel 1 do_bootm uboot下使用bootm命令啓動內核鏡像文件uImage,uImage是在zImage頭添加了64字節
原创 uart調試
0.000000]@0 CPU: 0 PID: 0 Comm: swapper Nottainted 3.10.84-gc02f4f9-03166-g8c8a4c4-dirty #40 [ 0.000000]@0 Call