數碼相框設計-英文字母、漢字點陣的顯示
目的: 在LCD上顯示一個英文字母和一個中文。<從字母和漢字的點陣里面取出它的數據,然后搬到LCD上面去>
原理:在內存中劃出一塊空間(FrameBuffer或顯存),工作的時候LCD控制器會從FrameBuffer中取出若干字節(jié)的數據(若干字節(jié)的數據代表一個像素),發(fā)到LCD顯示屏上
回顧:以前我們在LCD驅動中測試,顯示hello字符:echo hello > /dev/tty1
(對于/dev/tty說明點我跳轉), 顯然在lcd上顯示一個字符,肯定有它的點陣。echo hello
只輸入了hello
的ascii碼,那么怎么根據這個ascii碼怎么得到它的點陣。->推測在內核中肯定含有英文字母的點陣。
8x16
(選這個和16*16的中文點陣高度匹配)
②顯示中文字符 中文字符點陣在HZK里面,每個占據((16 x 16bit / 8)) = 32字節(jié);存儲詳情點我跳轉 以’中’為例:D6(區(qū)碼) D0(位碼)描繪一下字母’A’:16字節(jié)((8 x 16bit / 8))每一個英文字母用16字節(jié)表示;對于英文字符非常簡單,直接給出一個數組,搜索一下A的點陣0x41:
區(qū):表示哪一塊
為了兼容英文字符,并不是從0開始而是從A1開始
位:一塊里面的哪一個
D6 - A1
就可以得到哪一塊;D0 - A1
表示這一塊里面的哪一個
- 編譯show_font.c:這個結構體我們需要包含一個頭文件
fb.h
,看一下我們的交叉編譯工具鏈有沒有fb.h
有的,那么證明linux3.4.2下肯定有fb.h,如圖:
那我們直接包含進show_font.c中就可以解決。
arm-linux-gcc -o show_font show_font.c
④ 在開發(fā)板中的文件系統(tǒng)上掛載ubnubtu的文件夾。
mount -t nfs -o nolock 192.168.2.3:/work/nfs_root/smxk /mnt
詳細掛載方法點我跳轉
⑤把程序拷貝到我們的網絡文件系統(tǒng)中:
cp HZK16 show_font /work/nfs_root/smxk
—————>
⑥ 測試: Ⅰ、配置內核:我們內核里面沒有加入LCD的支持,配置、修改內核支持把lcd.c編譯進去(代碼在上面)。<關于lcd.c驅動編寫點我跳轉> cp /mnt/hgfs/czg/smxk/002*/lcd.c drivers/video/Ⅱ、使用新內核啟動
vim drivers/video/Makefile
/2410 把原來的lcd驅動給注釋掉 -> lcd.o
make menuconfig : 配置內核把LCD給包含進去
Device Drivers -> Graphics support ->Support for frame buffer devices
–>Y> s3c2410 LCD framebuffer support (以前是作為模塊,現在輸入Y編譯進內核里面去)
EXIT保存
make uImage
編譯完成后 把內核拷貝到網絡文件系統(tǒng)中去:cp arch/arm/boot/uImage /work/nfs_root/smxk
使用新內核來啟動:nfs 32000000 192.168.2.3:/work/nfs_root/smxk/uImage; bootm 32000000
解決:換成畢業(yè)班視頻的uboot:u-boot_new.bin詳情見:畢業(yè)班視屏https://edu.csdn.net/course/play/2597/40770
然后set set machid 7CF
進而nfs 32000000 192.168.2.3:/work/nfs_root/smxk/uImage; bootm 32000000