看板 LinuxDev 關於我們 聯絡資訊
又來自己回自己了XD 後來發現是硬體的問題。 發現問題的方式是在start_kernel函式裡 不做alloc_bootmen,而是直接指定實體位置然後ioremap 16MB size的記憶體(0xa1000000~0xaf000000) 然後再做memset 16MB為0x5A的動作,進而發現到某些區塊的記憶體 memset之後會造成kernel死當,才查出來是硬體那邊的關係 所以我原先的問題也可能是因為alloc_bootmen的記憶體加大之後 造成initramfs解壓縮解到有問題的記憶體區塊造成的。 修正完硬體設定之後,alloc_bootmen快樂使用中^^ ※ 引述《askacis (ASKA)》之銘言: : 目前因為硬體的需求 : 需要allocate一塊很大的連續記憶體空間出來給硬體使用 : 目前查到的方式是在開機的時候使用alloc_bootmen保留出一塊記憶體 : 但是目前實驗的結果是如果我配置在20MB左右的時候開機一切都會正常 : 但是到了30MB時,kernel就會掛點並且顯示指到Null Point的訊息,我用KGDB下去看 : 發覺是死在解壓縮initramfs的時候死在ungzip函式中。 : 有可能我配置出來的記憶體空間與initramfs要用的記憶體空間相衝突嗎? : 目前查到在System.map中有關initramfs的區域如下 : c001b300 T __initramfs_start : c034c4cf T __initramfs_end : 這兩個symbol包的應該是我的initramfs資料,那麼不曉得在解壓縮的時候 : 解出來的資料會放到哪邊? : 我也有check我配置出來的point位置,也不在initramfs的範圍裏面 : 不曉得有大大有相關的經驗可以指導小弟一條明路嗎? : 還是說,還有別的方式可以配置出一塊很大的記憶體空間(>100MB)? : 感謝大家的幫忙~~小弟感激不盡~~^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.73.91.20
kaioukilu:幫推一下 06/28 12:58
Neo1978:那硬體問題怎麼辦? =_= 06/28 19:15