移植環(huán)境
BootLoader:u-boot-1.1.6
kernel:linux-2.6.30.4
CPU:s3c2440
開(kāi)發(fā)板:TQ2440
LCD:TFT480*272
參考資料:《天嵌Linux移植手冊(cè)》
移植步驟
1、修改LCD時(shí)鐘計(jì)算方法
內(nèi)核源碼的“drivers/video/s3c2410fb.c”文件,就是 LCD 的驅(qū)動(dòng)源碼。修改“drivers/video/s3c2410fb.c”文件
static void s3c2410fb_activate_var(struct fb_info *info)
{
struct s3c2410fb_info *fbi = info->par;
void __iomem *regs = fbi->io;
int type = fbi->regs.lcdcon1 & S3C2410_LCDCON1_TFT;
struct fb_var_screeninfo *var = &info->var;
struct s3c2410fb_mach_info *mach_info = fbi->dev->platform_data;
struct s3c2410fb_display *default_display = mach_info->displays +
mach_info->default_display;
int clkdiv = s3c2410fb_calc_pixclk(fbi, var->pixclock) / 2;
dprintk("%s: var->xres = %dn", __FUNCTION__, var->xres);
dprintk("%s: var->yres = %dn", __FUNCTION__, var->yres);
dprintk("%s: var->bpp = %dn", __FUNCTION__, var->bits_per_pixel);
if (type == S3C2410_LCDCON1_TFT) {
s3c2410fb_calculate_tft_lcd_regs(info, &fbi->regs);
--clkdiv;
if (clkdiv < 0)
clkdiv = 0;
} else {
s3c2410fb_calculate_stn_lcd_regs(info, &fbi->regs);
if (clkdiv < 2)
clkdiv = 2;
}
// fbi->regs.lcdcon1 |= S3C2410_LCDCON1_CLKVAL(clkdiv);
fbi->regs.lcdcon1 |= S3C2410_LCDCON1_CLKVAL(default_display->setclkval);
/* write new registers */
完成了這部分修改之后,在 s3c2410fb_display 結(jié)構(gòu)體中添加了一個(gè) setclkval 的變量,那么需要在該結(jié)構(gòu)體的原型中添加上該變量,修改Linux-2.6.30.4 的“arch/arm/mach-s3c2410/include/mach/fb.h”文件,添加如下內(nèi)容:
/* LCD description */
struct s3c2410fb_display {
/* LCD type */
unsigned type;
/* Screen size */
unsigned short width;
unsigned short height;
/* Screen info */
unsigned short xres;
unsigned short yres;
unsigned short bpp;
unsigned pixclock; /* pixclock in picoseconds */
unsigned setclkval; /* clkval */
unsigned short left_margin; /* value in pixels (TFT) or HCLKs (STN) */
unsigned short right_margin; /* value in pixels (TFT) or HCLKs (STN) */
unsigned short hsync_len; /* value in pixels (TFT) or HCLKs (STN) */
unsigned short upper_margin;/* value in lines (TFT) or 0 (STN) */
unsigned short lower_margin;/* value in lines (TFT) or 0 (STN) */
unsigned short vsync_len; /* value in lines (TFT) or 0 (STN) */
/* lcd configuration registers */
unsigned long lcdcon5;
};
2、修改LCD參數(shù)設(shè)置
然后修改 LCD 各個(gè)參數(shù)的配置,該配置參數(shù)在“arch/arm/mach-s3c2440/mach-smdk2440.c”文件中的由 107 行開(kāi)始的結(jié)構(gòu)體中,然后將其改為如下內(nèi)容即可:
(注意:添加上剛剛添加的那個(gè)變量 setclkval 的賦值)
/* LCD driver info */
static struct s3c2410fb_display smdk2440_lcd_cfg __initdata = {
.lcdcon5 = S3C2410_LCDCON5_FRM565 |
S3C2410_LCDCON5_INVVLINE |
S3C2410_LCDCON5_INVVFRAME |
S3C2410_LCDCON5_PWREN |
S3C2410_LCDCON5_HWSWP,
.type = S3C2410_LCDCON1_TFT,
.width = 480,
.height = 272,
.pixclock = 40000, /* HCLK 100 MHz, divisor 1 */
.setclkval = 0x4,
.xres = 480,
.yres = 272,
.bpp = 16,
.left_margin = 19, /* for HFPD*/
.right_margin = 10, /* for HBPD*/
.hsync_len = 30, /* for HSPW*/
.upper_margin = 4, /* for VFPD*/
.lower_margin = 2, /* for VBPD*/
.vsync_len = 8, /* for VSPW*/
}
static struct s3c2410fb_mach_info smdk2440_fb_info __initdata = {
.displays = &smdk2440_lcd_cfg,
.num_displays = 1,
.default_display = 0,
#if 0
/* currently setup by downloader */
.gpccon = 0xaa940659,
.gpccon_mask = 0xffffffff,
.gpcup = 0x0000ffff,
.gpcup_mask = 0xffffffff,
.gpdcon = 0xaa84aaa0,
.gpdcon_mask = 0xffffffff,
.gpdup = 0x0000faff,
.gpdup_mask = 0xffffffff,
#endif
// .lpcsel = ((0xCE6) & ~7) | 1<<4,
};
然后修改“drivers/video/Kconfig”文件
config FB_S3C2410
tristate "S3C2410 LCD framebuffer support"
depends on FB && ARCH_S3C2410
select FB_CFB_FILLRECT
select FB_CFB_COPYAREA
select FB_CFB_IMAGEBLIT
---help---
Frame buffer driver for the built-in LCD controller in the Samsung
S3C2410 processor.
This driver is also available as a module ( = code which can be
inserted and removed from the running kernel whenever you want). The
module will be called s3c2410fb. If you want to compile it as a module,
say M here and read If unsure, say N. config FB_S3C2410_DEBUG bool "S3C2410 lcd debug messages" depends on FB_S3C24X0 help Turn on debugging messages. Note that you can set/unset at run time through sysfs 然后修改“drivers/video/Makefile”文件,把 109 行的內(nèi)容改成如下所示: obj-$(CONFIG_FB_S3C2410) += s3c2410fb.o 3、制作開(kāi)機(jī)logo 首先需要在PC端下載GIMP軟件,然后導(dǎo)入一張480*272的bmp圖片. 圖像->模式->索引,最大顏色數(shù)量為224 保存圖片為ppm格式,數(shù)據(jù)類型為ASCII 開(kāi)機(jī)logo就制作好了,將其替換“drivers/video/logo/logo_linux_clut224.ppm”文件 4、配置內(nèi)核 Device Drivers —> Graphics support —> <* > Support for frame buffer devices —> [* ] Enable firmware EDID [* ] Enable Video Mode Handling Helpers *** Frame buffer hardware drivers *** < * > S3C2410 LCD framebuffer support <* > Framebuffer Console support [ * ] Bootup logo —> [ * ] Standard 224-color Linux logo 5、開(kāi)機(jī)顯示logo 配置完畢后,編譯出內(nèi)核鏡像,燒寫到 TQ2440 開(kāi)發(fā)板中,啟動(dòng)系統(tǒng)時(shí),就可以看到開(kāi)機(jī)logo 的畫面,這就表明 LCD 驅(qū)動(dòng)完成了。
上一篇:LCD驅(qū)動(dòng)移植之背光控制
下一篇:嵌入式驅(qū)動(dòng)編寫之簡(jiǎn)單驅(qū)動(dòng)Hello_word
推薦閱讀
史海拾趣
盡管有政府的支持,但Elpida Memory的經(jīng)營(yíng)狀況并未得到根本性的改善。在經(jīng)歷了多年的虧損和重組后,Elpida Memory最終于2012年被美國(guó)的美光科技(Micron Technology)收購(gòu)。這一收購(gòu)標(biāo)志著Elpida Memory正式退出了日本半導(dǎo)體產(chǎn)業(yè)的舞臺(tái),但也為其未來(lái)的發(fā)展提供了新的機(jī)遇。
在江蘇揚(yáng)州,一家名為鋒鳴電子的公司于2008年成立,起初專注于電子元器件的代工生產(chǎn)。面對(duì)激烈的市場(chǎng)競(jìng)爭(zhēng),公司創(chuàng)始人李偉決定走技術(shù)創(chuàng)新之路。2012年,鋒鳴電子成功研發(fā)出新一代高靈敏度蜂鳴器,該產(chǎn)品在噪音控制和響應(yīng)速度上實(shí)現(xiàn)了顯著突破,迅速獲得了國(guó)內(nèi)外市場(chǎng)的認(rèn)可。此后,公司不斷加大研發(fā)投入,逐步拓展產(chǎn)品線,成為電子蜂鳴器領(lǐng)域的佼佼者。
全志科技的起源可以追溯到趙廣民創(chuàng)立炬力公司的時(shí)期。作為“MP3之父”,趙廣民帶領(lǐng)炬力在短短幾年內(nèi)實(shí)現(xiàn)了MP3芯片出貨量的突破,年銷售額和凈利潤(rùn)均取得了驚人的增長(zhǎng)。然而,炬力的股權(quán)結(jié)構(gòu)問(wèn)題最終導(dǎo)致了趙廣民的離職。他隨后創(chuàng)建了全勝微電子有限公司,并在不久后遭遇不幸去世。但趙廣民的創(chuàng)業(yè)精神和市場(chǎng)洞察力為全志科技的誕生奠定了堅(jiān)實(shí)的基礎(chǔ)。
步驟: 1.compile選項(xiàng) => compile options Covrage setting (或者可以點(diǎn)擊選中文件,編輯properties,在coverage中選擇要實(shí)現(xiàn)的覆蓋選項(xiàng))2.對(duì)所設(shè)計(jì)文件進(jìn)行編譯3.最關(guān)鍵的一步,仿真,選擇simulate,選中文件,一定要在others選項(xiàng)中 ...… 查看全部問(wèn)答∨ |
在windows ce6.0的環(huán)境下使用一個(gè)第三方的DMO中有下列疑惑(該dmo是一個(gè)dll文件在windows目錄下): 1. 打開(kāi)注冊(cè)表找到了HKEY_CLASSES_ROOT\\CLSID\\下對(duì)應(yīng)的該dmo的信息,這個(gè)注冊(cè)項(xiàng)是否代表該dmo被使用了,還是只是注冊(cè)沒(méi)有被使用? 2. 我已經(jīng) ...… 查看全部問(wèn)答∨ |
請(qǐng)教:非模態(tài)對(duì)話框重復(fù)創(chuàng)建的問(wèn)題 mfc創(chuàng)建了一個(gè)主界面,上面由一個(gè)按鈕A,點(diǎn)擊按鈕彈出一個(gè)非模態(tài)對(duì)話框B,我要實(shí)現(xiàn)的功能是點(diǎn)擊主界面,非模態(tài)對(duì)話框B隱藏,點(diǎn)擊按鈕A,如果非模態(tài)對(duì)話框B隱藏,則顯示,如果非模態(tài)對(duì)話框關(guān)閉,則重新創(chuàng)建非模態(tài)對(duì)話框。 目前我的 ...… 查看全部問(wèn)答∨ |
|
STM32F103ADC+DMA和UART2中斷沖突問(wèn)題求助 程序中使用了TIM2,UART1,UART2和ADC+DMA1中斷,不加上UART2時(shí)都正常,加上UART2中斷后,運(yùn)行幾分鐘后ADC+DMA1的中斷就不能進(jìn)去了,更改了幾種中斷優(yōu)先級(jí)方式后都沒(méi)有解決。請(qǐng)大家看看是什么原因? void NVIC_Configuration(void) { ...… 查看全部問(wèn)答∨ |
jtag口的問(wèn)題,不小心把jtag口的pc0上的上拉電阻連接到pc3上面了,會(huì)不會(huì)造成芯片死鎖,或者損壞,這個(gè)問(wèn)題怎么解決啊,現(xiàn)在把這兩個(gè)口都接上上拉電阻都不行了?!? 查看全部問(wèn)答∨ |
我的電源輸入是4節(jié)干電池共6v,給ams1117-3.3穩(wěn)壓到3.3v,以前是穩(wěn)壓器輸入端輸出端都接的濾波電容,現(xiàn)在想減少原件去掉輸入端的濾波電容可以嗎?因?yàn)槲蚁氲母呻姵禺吘菇涣鞒煞钟邢薜亩椅冶WC輸出ok就行了,去掉合理嗎。謝謝大家… 查看全部問(wèn)答∨ |
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- 神經(jīng)形態(tài)芯片可能是革新機(jī)器人實(shí)時(shí)電機(jī)控制的未來(lái)
- 從三個(gè)方面理解ARM嵌入式系統(tǒng)
- 自動(dòng)報(bào)警 基于MCU的家庭防盜報(bào)警系統(tǒng)的設(shè)計(jì)
- 存儲(chǔ)控制器及其訪問(wèn)外設(shè)的原理
- 基于51系列單片機(jī)的智能照明控制系統(tǒng)設(shè)計(jì)方案
- 基于STM32的四旋翼飛行器控制系統(tǒng)
- 單片機(jī)應(yīng)用編程技巧解析
- 基于89C52的教室智能節(jié)能照明系統(tǒng)設(shè)計(jì)
- 一種新型的雨量光照傳感器的設(shè)計(jì)
- 蜂巢能源2025年試產(chǎn)半固態(tài)電池,2027年大批量供貨
- 激光雷達(dá)進(jìn)化論:RoboSense如何持續(xù)領(lǐng)跑?
- 法雷奧-全景顯示技術(shù) Panovision | 申報(bào)2025第七屆金輯獎(jiǎng)中國(guó)汽車新供應(yīng)鏈百?gòu)?qiáng)
- 公安部:目前我國(guó)市售汽車搭載的“智駕”系統(tǒng),都不具備“自動(dòng)駕駛”功能
- 德賽西威-旗艦級(jí)AI智能座艙域控制器 | 申報(bào)2025第七屆金輯獎(jiǎng)中國(guó)汽車新供應(yīng)鏈百?gòu)?qiáng)
- Mobileye推出駕駛員監(jiān)測(cè)系統(tǒng)(DMS)技術(shù) ,實(shí)現(xiàn)人與車輛協(xié)同駕駛
- 第三屆安富利汽車生態(tài)圈峰會(huì)盛大啟幕,雙城聯(lián)動(dòng)激發(fā)智慧出行產(chǎn)業(yè)新動(dòng)能
- Vicor Corporation 2025年第二季度財(cái)報(bào):專利訴訟和解推動(dòng)強(qiáng)勁增長(zhǎng)
- 智能底盤2.0競(jìng)賽,這家外資巨頭按下加速鍵
- GaN技術(shù)如何應(yīng)用到人形機(jī)器人執(zhí)行關(guān)節(jié)?
- TI 高精度實(shí)驗(yàn)室信號(hào)鏈精品課大作戰(zhàn)——你學(xué)習(xí)我送禮!
- TI 嵌入式處理器最新產(chǎn)品發(fā)布會(huì) 全程在線直播 4月16日精彩為您呈現(xiàn)!預(yù)報(bào)名、看直播、享好禮
- 【TI 嵌入式研討會(huì)集錦】小站添加了很多新內(nèi)容,歡迎提貨!
- 《帶您了解ADI數(shù)字健康生物傳感器系列》有獎(jiǎng)直播
- 解鎖【W(wǎng)5500-EVB-Pico】,探秘以太網(wǎng)底層,得捷Follow me第4期來(lái)襲!
- 免費(fèi)下載Vishay最新汽車解決方案
- 答題贏京東卡|《安森美和安富利物聯(lián)網(wǎng)創(chuàng)新設(shè)計(jì)大賽作品集》
- 有獎(jiǎng)?wù){(diào)查:ST MEMS 傳感器論壇用戶問(wèn)卷調(diào)查,參與有驚喜
- 答題贏好禮:ADI MEMS工業(yè)監(jiān)測(cè)助力機(jī)器大健康發(fā)展
- 是德PathWave Design 2021 加快產(chǎn)品上市速度
- ams超小環(huán)境和接近光傳感器模塊,可讓手機(jī)實(shí)現(xiàn)更窄邊框
- 博世“長(zhǎng)期供貨計(jì)劃”助力物聯(lián)網(wǎng)、工業(yè)持續(xù)發(fā)展
- 持續(xù)引領(lǐng)電視機(jī)行業(yè),創(chuàng)維加入 WiSA 協(xié)會(huì)
- Strategy Analytics:疫情期間,人們似乎習(xí)慣了居家辦公
- 特斯拉回應(yīng)手工組裝電池:電池質(zhì)量、安全沒(méi)有問(wèn)題
- 2020年后電動(dòng)汽車財(cái)政補(bǔ)貼將退出
- 特斯拉追尾路邊消防車,Autopilot模式難識(shí)別靜止對(duì)象
- 如何給汽車系統(tǒng)選擇合適的非易失性存儲(chǔ)器
- 馬自達(dá)研發(fā)新一代汽油引擎技術(shù) 能效堪比電動(dòng)車