優龍的Bootloader的LCD視訊記憶體初始化

2021-05-18 08:04:22 字數 1718 閱讀 6031

#define lcd_xsize_tft    (320)     

#define lcd_ysize_tft    (240)

#define scr_xsize_tft    (lcd_xsize_tft*2)

#define scr_ysize_tft    (lcd_ysize_tft*2)

#define lcdframebuffer 0x33800000

u16 (*framebuffer16bittft)[scr_xsize_tft];

framebuffer16bittft=(u16 (*)[scr_xsize_tft])lcdframebuffer;

1、#define lcdframebuffer 0x33800000  定義

lcd顯存在

sdram

的位址,硬體上

sdram(64m)

的片選連線的是

ngcs6

,所以sdram

的起始位址為

0x3000 0000

,結束位址

0x3800 0000 2

、u16 (*framebuffer16bittft)[scr_xsize_tft];

定義乙個指標陣列,陣列中的資料為

u16型別

指標中有

scr_xsize_tft

個元素也就是

framebuffer16bittft

所值的物件是有

scr_xsize_tft

個u16

的元素的陣列

即framebuffer16bittft

是行指標 3

、framebuffer16bittft=(u16 (*)[scr_xsize_tft])lcdframebuffer;

這個就是給

framebuffer16bittft

指標賦值

位址為0x33800000

這個不太好理解,平時我們基本上都是這樣定義的

直接定義成乙個二維陣列

// 定義framebuffer

緩衝區

__align(4)  volatile uint16  framebuffer[gui_lcm_ymax][gui_lcm_xmax];

這裡涉及到二維陣列指標,好久沒有看了,呵呵,複習一下

1、定義乙個二維陣列

首位址為0

int  a[3][4]=,,

} 表示形式

含義位址

a         

二維陣列名,陣列首位址,

0行首位址0

a[0],*(a+0),*a    第0

行第0列元素位址0

a+1.&a[1]       第1

行首位址8

a[1],*a(a+1)     第1

行第0列元素位址8

a[1]+2,*(a+1)+2,&a[1][2] 第1

行第2列元素位址12

*(a[1]+2),*(*a(+1)+2),a[1][2]  第1

行第0列的值13 2

、定義乙個陣列指標

int (*p)[4];

int  a[3][4]=,,

} int (*p)[4];表式p

是乙個指標變數,他指向包含

4個元素的一維陣列,兩側的括號不可缺少

///

AVR的bootloader的設定

一些注意事項 1.熔絲位的燒寫 bootrst要進行程式設計,這樣微控制器在復位後自動跳轉到bootloader區執行bootloader的 然後要根據自己bootloader的大小設定boot區的的熔絲位 具體設定如下圖,這裡我選擇的是1024大小 注意1代表為程式設計,0代表已程式設計 2.設定...

BootLoader的基本概念

板級支援包 bsp bsp是板級支援包 board support package 的縮寫,是通常用在嵌入行業中的乙個術語,用來代表在乙個特殊硬體平台上快速構建乙個嵌入作業系統所需的原始資料或者二進位制軟體包。bsp的作用是支援作業系統,使之能夠更好的執行於硬體平台。bsp是相對於作業系統而言的,不...

bootloader的啟動流程分析

bootloader的啟動流程有兩個階段 stage1和stage2。一 stage1完成的基本工作 1 基本硬體初始化 包括遮蔽所有的中斷 設定cpu的速度和時鐘頻率 ram初始化 初始化led 關閉內部指令和資料cache燈。2 為載入stage2準備ram空間,通常為了獲得更好的執行速度,通常...