一句log引發的血案

來源:互聯網
上載者:User

先上代碼

         unsigned nlcmVendorSize;void *plcmVendorID; plcmVendorID =smem_get_entry(SMEM_LCM_VENDOR_ID, &nlcmVendorSize);        printk(KERN_INFO"\n[LCD_COMP]plcmVendorID=%d\n",*((uint32*)plcmVendorID));        printk(KERN_INFO"[LCD_COMP]Default lcm_vedor=%d\n",lcm_vedor);if(plcmVendorID!=NULL){/*Shared LCD type is available*/if( *((uint32*)plcmVendorID)>LCM_VENDOR_ID_MIN && *((uint32*)plcmVendorID)<LCM_VENDOR_ID_MAX){if(*((uint32*)plcmVendorID)==LCM_VENDOR_ID_CHENXING){lcm_vedor=LCM_VENDOR_ID_CHENXING;printk(KERN_INFO"[LCD_COMP]LCM is ChenXing\n");}else if(*((uint32*)plcmVendorID)==LCM_VENDOR_ID_DJN){lcm_vedor=LCM_VENDOR_ID_DJN;printk(KERN_INFO"[LCD_COMP]LCM is DJN\n");}}elseprintk(KERN_INFO"[LCD_COMP]Select default lcm\n");//else select default lcm}else{printk(KERN_INFO"[LCD_COMP]Read SMEM_LCM_VENDOR_ID Fail, Select deault LCM\n");//select default lcm}printk(KERN_INFO"[LCD_CMOP]lcm_vedor=%d\n\n",lcm_vedor);  

        做lcd“相容”時,由於lcd的spi沒有接sdo,無法從ic讀資料,於是只能通過配置不同的efs來做相容。要從arm9端通過共用記憶體介面讀資料,出錯處理比較多,如可能讀不到,可能讀錯,都需要考慮到。添加的代碼如上,經測試發現了個致命的問題:如果modern端efs沒有配置,導致無法開機!(雖然arm9和arm11端代碼正常應該一致,為了防止人為疏忽,以防萬一,還得尋找原因:-( )。最終找到原因,差點吐血:

plcmVendorID =smem_get_entry(SMEM_LCM_VENDOR_ID, &nlcmVendorSize);讀取失敗,返回0,此時plcmVendorID=0,即此指標不指向任何變數,

千不該萬不該,為了調試方便,我在緊隨其後加了句測試代碼:



printk(KERN_INFO"\n[LCD_COMP]plcmVendorID=%d\n",*((uint32*)plcmVendorID))

如果plcmVendorID為0這個指標根本不會指向任何變數,但prink卻要列印其指向變數的值!!??

解決方案,將這句printk下移放入if(plcmVendorID!=NULL)中,即只有這個指標有指向時才列印!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.