一、實驗原理
大家可能會有疑問,不是在BL2目錄中的mem_init_tiny4412.S實現了串口初始化了,且也有串口輸出函數,要不然怎么串口調試助手上怎么會有打印信息呢,這里為什么還要重新初始化?其實我覺得也可以不用重新初始化,但至少也要實現Printf()這個標準函數里要調用的串口輸出函數吧,因為初始化工作在時鐘沒有改變的情況下,可以只初始化一次,但是到LCD初始化這一步時,CPU已經重定位到DRAM中執行了,前面在mem_init_tiny4412.S實現的函數uart_asm_putc和uart_asm_putx函數現在代碼應定位不到了吧,所以應無法調用了,所以我覺得有必要重新初始化,至少實現串口輸出函數。
代碼實現方式還是從U-BOOT中去COPY修改的,同時也參考了《Linux平臺下Mini210S裸機程序開發指南》的第24章代碼方式。這一章我不會詳細的去說明代碼中串口如何實現等等,我只想找出LCD用另一種代碼風格沒能初始化成功的原因?代碼的實現過程,相信大家有了前面幾章的說明,自己應想明白吧。
linux系統中提取出來的一些相關文件,雖然我這里重新實現了串口初始化函數,但我也沒有在user_bin.bin程序的main執行階段沒有調用此函數進行初始化串口,而是只會通過printf()函數調用putc()輸出函數和輸入所用getc()函數。所以這也驗證了前面的設想,其實一開始串口已初始化好了,我們沒有改變時鐘什么的,沒必要再來初始化一次了。程序實現方式簡章不做過多說明。測試過程中我發現,繪制文字一直不是很清晰,三個字庫都如此,程序上可能存在什么問題吧,需要好好排查。
Lcd.c中的lcd_draw_bmp()繪圖函數我進行了修改,讓他的更加靈活一點,它可以繪制由網上比較流行的圖片轉LCD數據軟件“img2lcd”轉換出來的,帶有8字節圖片信息頭的字符數組文件。此函數會自動從8字節的信息頭中提取圖像高度和寬度信息,然后進行繪圖。由于我現在提供是800*480的24bit的圖片,現在編譯生成的user_bin.bin文件會比較大了,現在出來的文件大小已經比較大了,大約有1149K了,所以我們有必要修改一下BL2中mmc_relocate.c,要將其復制的扇區大小改大一些,一個扇區512字節,大家看著自己程序修改吧,但也不能太大了,因為我不清楚FriendlyARM為我們提供的SD-Flasher.exe在格式分區時,第一分區分配大小到底有多大,我不是很確定,我用一個分區工具查看時,發現在大小有150M左右,如下圖9-1所示,大家的程序還是控制在5M大小內比較保險吧。
圖9-1、SD卡分區示意圖
我修改復制的大小為2048K,所以扇區數為4096,代碼如下所示:
SDMMC_ReadBlocks(49,4096,0x43e00000);
3、main.c
main.c程序也做了相關修改,主要是復制了《Linux平臺下Mini210S裸機程序開發指南》第24章所提供的代碼,程序實現通過輸入不同數字繪出不同的圖形,同時屏幕上會顯示字符。程序實現也很簡單,這里不過多說明。
三、完整的燒寫過程
已將SD卡插入電腦,假設linux識別了SD卡,其識別號為sdb。執行下面命令:
# chmod 777 –R 8_sdram_LCD_Char
# cd 8_sdram_LCD_Char
# make
# ./ fast_fuse /dev/sdb
由于這個程序user_bin.bin程序比較大了,燒寫的時間會長一些吧,我的一般要兩三分鐘了,大家耐心等待,燒寫過程中,屏幕沒有反應,不是燒寫的sh死了。
四、上電實驗
將sd卡插入Tiny4412中,選擇sd卡啟動,和電腦能過串口0連接好,打開一個串口調試助手,然后上電,可以看到以下現象:
串口助手中不但顯示了前面從內存中讀出的信息,同時也輸入了LCD初始化過程中增加的打印信息,我截取了部分輸出如下圖9-2所示,從圖上可以看出VIDTCON2寄存器的初始化值兩種風格設置數值果然不同,這就是問題的所在。
圖9-2、LCD初始化輸出信息
查看代碼,原來是代碼如下,原來LINEVAL<< 11寫借了,EXYNOS_VIDTCON2_LINEVAL(x)已經將值左移11位了,這里我又左移了11位,導致初始化出錯。
//VIDTCON2 = ( EXYNOS_VIDTCON2_LINEVAL(LINEVAL<<11) |
EXYNOS_VIDTCON2_HOZVAL(HOZVAL));
將其修改為:
//VIDTCON2 = ( EXYNOS_VIDTCON2_LINEVAL(LINEVAL)|
EXYNOS_VIDTCON2_HOZVAL(HOZVAL));
重新編譯上電實驗,從下圖9-3中截取的部分可以看出現在初值一樣了。
圖9-3、LCD初始化輸出信息
最后,我將這一章的代碼修改為第二種風格的書寫方式提供給大家,我自己也編譯上電驗證了,現在程序也能正常工作了。
這一步完成后,即可以驗證了main程序了,如下圖9-4所示,是發送字符5后繪制一幅圖片的效果圖。
圖9-4、Tiny4412實現效果圖
So Sexy ??? Oh haa??
第十章、尾聲
一開始我說過,我一開始一直想在U-BOOT中移植成功LCD功能,但始終無法實現,才想著先用裸機程序來實驗,驗證LCD程序能正常工作了,再去調試U-BOOT,所以才會從網上才找到《Linux平臺下Mini210S裸機程序開發指南》的文檔,也才有這一篇裸機程序學習記錄文檔,到此,我的目的已經達到了,后面按Mini210S的文檔程序都是通過Minitools來燒寫的,但我們的Tiny4412不行,我也不去深入實現其他的裸機代碼了,但文檔中提供重定位到DRAM中運行的方法,同樣可以實現一些程序稍大的裸機程序,有興趣的朋友可以參考《Linux平臺下Mini210S裸機程序開發指南》文檔,實現完所有的功能,為廣大學習朋友造福,我在此已花支了一段時間了,我學這個是有目的,不想花過多時間深入其他程序,下一步轉回到U-BOOT的調試中去。謝謝!
上一篇:tiny4412 裸機程序 七、重定位代碼到DRAM
下一篇:tiny4412學習(一)之從零搭建linux系統
推薦閱讀
史海拾趣
然而,Cyrix的發展并非一帆風順。1997年,該公司被美國國民半導體公司收購。這一收購為Cyrix帶來了新的機遇和挑戰。在新的母公司旗下,Cyrix繼續推出了一系列新的CPU產品,但市場競爭的激烈使得其面臨巨大的壓力。
Entegris以其卓越的技術實力和廣泛的市場應用,成為半導體、顯示器以及其他高科技行業不可或缺的合作伙伴。隨著全球高科技產業的快速發展,對微污染控制技術的需求不斷增長,Entegris的技術領先地位為其帶來了持續的競爭優勢。
隨著全球半導體市場的不斷擴大,Chiplus也加快了市場拓展的步伐。公司不僅在日本、歐盟、美國和泛太平洋亞洲地區建立了穩定的客戶群體,還積極開拓新興市場,提升品牌知名度和影響力。同時,Chiplus還加強了與全球知名企業的合作,通過技術合作、產業鏈協同等方式,共同推動半導體行業的發展。
ES Systems自創立之初就專注于電子系統技術的研發。公司創始人是一位資深的電子工程師,他帶領團隊不斷突破技術瓶頸,開發出了一系列高性能的電子系統產品。隨著技術的不斷成熟和產品線的豐富,ES Systems逐漸在市場中樹立了技術領先的形象,吸引了大量客戶的青睞。公司通過技術驅動實現了快速成長,并在電子行業中占據了重要地位。
隨著中國經濟的快速發展,BALLUFF公司也看到了中國市場的巨大潛力。為了更好地服務中國市場,BALLUFF在2007年堅定地走本土化路線,在成都建立了生產工廠。這一舉措不僅縮短了亞洲地區的響應時間和供貨周期,也極大地提升了客戶滿意度。隨著工廠的正式運行,BALLUFF在中國市場的地位逐漸穩固,其傳感器產品也廣泛應用于汽車、冶金、機床和風電等行業。
終端PDA界面最大化后自己做一個圖片按鈕用來顯示電量和WLAN 終端采集器用的是SYMBOL的9300,我將窗口最大化后,狀態欄就隱藏掉(要求這樣子)這樣我就需要自己顯示電量和那個設置無線局域網的東西。有做過的發一個DEMO程序到我郵箱里,謝謝!worldisliuyi@163.com… 查看全部問答∨ |
在ARM的板子上開發程序,操作系統是wince5.0需要一個藍牙適配器,可是我不太懂 1、wince上有沒有自帶的驅動程序? 2、如果有的話是不是所有的藍牙適配器都能直接使用? 3、支持的是USB的和串口的藍牙適配器都支持嗎? 謝謝了… 查看全部問答∨ |
如題,在VxWorks下我看到很多人都喜歡用下面第一段的寫法,而且uC/OS-II源碼里也喜歡第一段的風格 而我覺得第二段的寫法更簡潔,只是鎖任務的時間多了一個判斷語句的執行時間 如果在源文件中用第二段代碼將第一段替代,應該是等價的吧。。。。 ...… 查看全部問答∨ |
其實利用USB與設備通信,PC機不一點要寫驅動,例如直接利用CDC-ACM也可以實現數據傳輸,只需寫個INF. 但為什么還是要自己在WDM中開發USB驅動呢? 看了下CDC文檔,感覺好多情況下可以利用WINDOWS自帶的一些API來寫應用,為什么我們還要去寫驅動呢. 大蛺 ...… 查看全部問答∨ |
不要是停產的啊..很郁悶找了atmel的AT77CXXX系列,貌似都停產了,我真是狂無語了,大家誰知道比較便宜的這種傳感器啊,滑動的哦.. 散分了 ...… 查看全部問答∨ |
|
我使用的是wince5,7寸的觸摸屏。系統啟動后,做了矯正(而且試了n多次)。問題2個:1。只要用筆點擊一下圖標,那個圖標就會移動一下,而且方向總是一樣的,都是向左下移動,大概有10-15左右個象素的距離。 2。當點擊屏幕上方靠近屏幕上邊緣的地方 ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 特斯拉:美國交付的Model Y/3電池包已實現100%美國生產
- 地平線與博世深化合作,攜手為多家車企提供輔助駕駛產品
- 強化中國市場戰略布局,德州儀器正靈活應對全球關稅挑戰
- Molex莫仕通過本地合作和創新加強支持中國汽車行業
- 貿澤開售Texas Instruments適用于高分辨率AR HUD的 全新DLP4620S-Q1 0.46"汽車數字微鏡器件
- ROHM推出高功率密度的新型SiC模塊,將實現車載充電器小型化!
- 用上車規級UFS 4.0,讓出行變得高效且可靠
- 車載測試技術解析:聚焦高帶寬、多通道同步采集與協議分析
- 傳統晶體管的極限!臺積電3nm N3P已量產
- 分析師稱H20出口管制毫無意義:對中國AI發展影響不大