国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

產(chǎn)品開發(fā)流程及每個(gè)流程內(nèi)容網(wǎng)站優(yōu)化網(wǎng)站優(yōu)化

產(chǎn)品開發(fā)流程及每個(gè)流程內(nèi)容,網(wǎng)站優(yōu)化網(wǎng)站優(yōu)化,wordpress 老伍,手機(jī)網(wǎng)站定制全志ARM926 Melis2.0系統(tǒng)的開發(fā)指引⑥ 編寫目的9. 系統(tǒng)啟動(dòng)流程9.1. Shell 部分9.2.Orange 和 desktop 部分9.3. app_root 加載部分9.4. home 加載部分 10. 顯示相關(guān)知識(shí)概述10.1. 總體結(jié)構(gòu)10.2. 顯示過(guò)程10.3. 顯示寬高參數(shù)關(guān)系 -. 全志相關(guān)工具和資源-.1 全志固件鏡像修改工具…

全志ARM926 Melis2.0系統(tǒng)的開發(fā)指引⑥

  • 編寫目的
  • 9. 系統(tǒng)啟動(dòng)流程
    • 9.1. Shell 部分
    • 9.2.Orange 和 desktop 部分
    • 9.3. app_root 加載部分
    • 9.4. home 加載部分
  • 10. 顯示相關(guān)知識(shí)概述
    • 10.1. 總體結(jié)構(gòu)
    • 10.2. 顯示過(guò)程
    • 10.3. 顯示寬高參數(shù)關(guān)系
  • -. 全志相關(guān)工具和資源
    • -.1 全志固件鏡像修改工具 ImageModify.exe 下載
    • -.2 全志固件USB刷機(jī)工具 PhoenixSuit 下載
    • -.3 全志Melis2.0 用戶手冊(cè).pdf下載
    • -.4 全志melis2.0 sdk源碼庫(kù)下載

編寫目的

本文檔是全志 Melis2.0 系統(tǒng)的開發(fā)指引文檔,旨在協(xié)助開發(fā)者了解和掌握 Melis 系統(tǒng),快速搭建 Melis系統(tǒng)的開發(fā)環(huán)境,將 Melis2.0 系統(tǒng)應(yīng)用到產(chǎn)品開發(fā)中。
在這里插入圖片描述

9. 系統(tǒng)啟動(dòng)流程

系統(tǒng)加載流程:boot0- boot1-kernel(epos.img)-shell
當(dāng)硬件目標(biāo)平臺(tái)上電后,BROM 就會(huì)將 BOOT0 裝載到 SRAM 中,并從 SRAM 開始執(zhí)行,將控制權(quán)交給 eBoot。
eBoot 的啟動(dòng)流程分為兩個(gè)階段:
第一個(gè)階段是 BOOT0 加載 BOOT1,BOOT0 將 BOOT1 裝載到 DRAM,在 DRAM 上執(zhí)行;
第二個(gè)階段是 BOOT1 加載系統(tǒng)內(nèi)核,BOOT1 將內(nèi)核裝載到 DRAM。
每個(gè)階段分別初始化各自所須的硬件資源,同時(shí)也為下一個(gè)階段做好準(zhǔn)備工作。本文主要說(shuō)明從 shell
部分到 home 應(yīng)用的建立。具體流程如下圖:
圖57:
在這里插入圖片描述
下面結(jié)合代碼進(jìn)行系統(tǒng)加載流程說(shuō)明:

9.1. Shell 部分

系統(tǒng)初始化完成之后首先進(jìn)入 Shell 進(jìn)行初始化操作(路徑:suniv\beetles\ramfs
shell.zgj)。 Shell 部分主要函數(shù)是 shellmain()它主要調(diào)用三個(gè)函數(shù),分別是 Esh_init() 、
Esh_StartUp()、Esh_ReaderLoop()。
Esh_init():主要完成一些必要文件的獲取路徑,申請(qǐng)資源等操作。
在這里插入圖片描述
Esh_StartUp():檢查并執(zhí)行 Esh_init()函數(shù)獲取的 script。(路徑:suniv\beetles\ramfs\ startup.esh)
在這里插入圖片描述
Startup.esh:腳本執(zhí)行 startx。查看 Esh_builtin.c 文件中定義:shell 命令 startx 調(diào)用的是 dostart.c
在這里插入圖片描述
dostartx.c:__exec_startx()。該函數(shù)完成 desktop.mod 和 orange.mod 兩個(gè)模塊的加載和檢查。
在這里插入圖片描述
Esh_ReaderLoop():主要完成 shell 命令讀取和執(zhí)行。等待模塊、驅(qū)動(dòng)、窗口等部分安裝初始化完成后,
在循環(huán)中不斷讀取串口的調(diào)試命令進(jìn)行處理??蓤?zhí)行的命令均在 Esh_builtin.c 文件中。
在這里插入圖片描述

9.2.Orange 和 desktop 部分

模塊加載:以 desktop.mod 為例,查看 mod_desktop 文件夾下面的 make.cfg 有
TARGET = $(WORKSPACEPATH)/beetles/rootfs/mod/desktop.mod
查看入口代碼文件 magic.c 找到初始化接口:在 desktop 模塊的 MOpen 函數(shù)中加載了 init 模塊:
在這里插入圖片描述
模塊加載:查看 init 文件夾下面的 make.cfg 有
TARGET = $(WORKSPACEPATH)/beetles/rootfs/apps/init.axf。
首先查看 magic.c 文件,在 MOpen 函數(shù)中創(chuàng)建了一個(gè)線程 application_init_process。
在這里插入圖片描述
Desktop 模塊加載完成之后加載 init 模塊。Init 模塊創(chuàng)建一個(gè)應(yīng)用初始化線程 application_init_process。
線程首先裝載必要的驅(qū)動(dòng),例如音頻驅(qū)動(dòng)、按鍵驅(qū)動(dòng)等。接下來(lái)是卡量產(chǎn)的必要準(zhǔn)備工作,這里不做過(guò)多研究。該線程最重要的三項(xiàng)工作是:
1、創(chuàng)建主管理窗口,用于消息的接受和預(yù)處理。該窗口名稱為 init_mainwin。關(guān)于窗口的分類以及功
能見(jiàn)其他章節(jié)。窗口創(chuàng)建時(shí)向自身發(fā)送 GUI_MSG_CREATE 消息,進(jìn)行初始化操作。
在這里插入圖片描述
init_mainwin 消息主管理窗口負(fù)責(zé)消息預(yù)處理,新消息先經(jīng)過(guò)本窗口,收到之后在回調(diào)函數(shù)
init_mainwin_cb()中進(jìn)行預(yù)處理。在調(diào)試階段可以在這里將經(jīng)過(guò)的消息打印出來(lái),查看消息是否被傳遞到主消息窗口,之后再一級(jí)級(jí)向下尋找消息傳播路徑。
2、在消息循環(huán)前在_process_init()函數(shù)中加載 app_root 應(yīng)用和注冊(cè)鉤子函數(shù)。鉤子函數(shù)的作用是從
input 輸入子系統(tǒng)中拿消息。
在這里插入圖片描述
3、啟動(dòng)消息接收和分發(fā)服務(wù)
在這里插入圖片描述

9.3. app_root 加載部分

在 applets 文件夾下的 make.cfg 有
TARGET = $(WORKSPACEPATH)/beetles/rootfs/apps/app_root.axf
這正是 inti 部分加載的 app_rootfs.axf 文件。首先創(chuàng)建根管理窗口 APP_ROOT。
首 先 調(diào) 用 app_root_wincreat() 函 數(shù) 創(chuàng) 建 一 個(gè) 管 理 窗 口 , 其 父 窗 口 是 init 創(chuàng) 建 的 根 窗 口
init_mainwin ,名字是 APP_ROOT,并且有一個(gè)重要參數(shù) ManWindowProc(管理窗口消息處理過(guò)程),注冊(cè)的回調(diào)函數(shù)為app_root_win_proc()。父窗口 init_mainwin 發(fā)送的消息首先在這里被處理,或者將子窗口的消息發(fā)送給父窗口。窗口創(chuàng)建時(shí)向自身發(fā)送 GUI_MSG_CREATE 消息,進(jìn)行初始化操作。
在這里插入圖片描述
app_root_win_proc()函數(shù)完成消息處理任務(wù)。其中較為重要的是 GUI_MSG_CREATE 和 GUI_MSG_COMMAND以及 GUI_MSG_KEY 三種消息。不需要處理的消息交給默認(rèn)流程往下分發(fā)。
接收到 GUI_MSG_CREATE 進(jìn)行應(yīng)用創(chuàng)建。
接收到 GUI_MSG_COMMAND,處理子窗口向父窗口發(fā)送來(lái)的消息。根據(jù) app 的 ID 進(jìn)行各個(gè) app 之間的切換。包括資源的關(guān)閉打開等。
接收到 GUI_MSG_KEY 進(jìn)行按鍵消息處理,完成按鍵響應(yīng),或者直接攔截按鍵消息。

9.4. home 加載部分

APP_ROOT 的回調(diào)函數(shù)接收到 GUI_MSG_CREATE 消息,繼續(xù)進(jìn)行桌面創(chuàng)建。首先進(jìn)行內(nèi)存資源申請(qǐng),創(chuàng)建子管理窗口 APP_HOME。創(chuàng)建函數(shù)為 app_home_create()。Home 管理窗口的名字是 APP_HOME,父管理窗口為APP_ROOT,消息處理回調(diào)函數(shù)為 app_home_proc()。窗口創(chuàng)建時(shí)向自身發(fā)送 GUI_MSG_CREATE 消息繼續(xù)進(jìn)行初始化操作。
在這里插入圖片描述
app_home_proc()函數(shù)主要完成消息處理任務(wù),其中較為重要的是 GUI_MSG_CREATE 和 GUI_MSG_COMMAND以及 GUI_MSG_KEY 三種消息。不需要處理的消息交給默認(rèn)流程往下分發(fā)。
接收到 GUI_MSG_COMMAND,處理子窗口向本窗口發(fā)送的消息。
接收到 GUI_MSG_KEY 進(jìn)行按鍵消息處理,完成按鍵響應(yīng),或者直接攔截按鍵消息。
接收到 GUI_MSG_CREATE 接著完成一系列初始化操作:
在這里插入圖片描述
其中 app_main_menu_create()創(chuàng)建主菜單圖層窗口,申請(qǐng)圖層,圖層大小與屏幕大小一致。另外創(chuàng)建framewin 窗口依賴在圖層窗口之上。framewin 管理窗口為 APP_HOME,回調(diào)函數(shù)為_main_menu_Proc()創(chuàng)建 framewin 窗口時(shí)向自身發(fā)送 GUI_MSG_CREATE 和 GUI_MSG_PAINT 消息,進(jìn)行資源初始化和桌面繪制。
在這里插入圖片描述
_main_menu_Proc()函數(shù)主要完成消息處理任務(wù),其中較為重要的是 GUI_MSG_CREATE 和 GUI_MSG_PAINT以及 GUI_MSG_KEY 三種消息。不需要處理的消息交給默認(rèn)流程往下分發(fā)。
接收到 GUI_MSG_PAINT,繪制桌面內(nèi)容,有些應(yīng)用該消息未使用,直接在 GUI_MSG_CREATE 完成繪制。
接收到 GUI_MSG_KEY,進(jìn)行按鍵消息處理,完成按鍵響應(yīng)。
接收到 GUI_MSG_CREATE,初始化 ui 資源,繪制桌面,激活桌面顯示:

在這里插入圖片描述
至此,應(yīng)用桌面創(chuàng)建完成。

10. 顯示相關(guān)知識(shí)概述

10.1. 總體結(jié)構(gòu)

在這里插入圖片描述
應(yīng)用層:melis 的默認(rèn)應(yīng)用名為“beetles”,它是獨(dú)立于內(nèi)核的一個(gè)應(yīng)用軟件。它通過(guò)調(diào)用“Orange GUI”和“Display Driver”的各項(xiàng)接口,實(shí)現(xiàn)了消息轉(zhuǎn)發(fā),窗口繪制和圖像顯示。

BSP-Orange :Orange 是基于 Melis 操作系統(tǒng)之上的一套 GUI 系統(tǒng),支持多任務(wù)多圖層等操作,給上層提供了豐富的 UI 工具。

BSP-Display_driver: Display 驅(qū)動(dòng)是 Melis 內(nèi)核對(duì)底層硬件接口的封裝,屏蔽硬件差異,提供一致的接口給上層。所有的顯示相關(guān)操作,最終都將依賴于該驅(qū)動(dòng)。
硬件層:真正實(shí)現(xiàn)顯示的硬件模塊。最主要的模塊是 DE(display engine)和 TCON。DE 主要的工作是將上層傳入的圖層數(shù)據(jù)進(jìn)行裁剪、格式轉(zhuǎn)換、放大縮小等相關(guān)操作,然后將數(shù)據(jù)輸送到 TCON。

10.2. 顯示過(guò)程

當(dāng)應(yīng)用層想要顯示一個(gè)圖層,則需要向驅(qū)動(dòng)層請(qǐng)求一個(gè)可用的圖層,然后將自己的顯示參數(shù)(圖層模式,數(shù)據(jù)格式,數(shù)據(jù)寬高,數(shù)據(jù) buf 地址等)設(shè)置到圖層中,就可以將數(shù)據(jù)顯示到屏幕上。偽代碼如下:
在這里插入圖片描述
在這些參數(shù)中要注意 buf 的設(shè)置,因?yàn)椴煌袷降臄?shù)據(jù),其存儲(chǔ)方式存在差異。
當(dāng)顯示的數(shù)據(jù)是 ARGB8888 數(shù)據(jù)時(shí),其 buf 長(zhǎng)度應(yīng)該是“width * height * 4”,A、R、G、B 各有一份自己的數(shù)據(jù),但因?yàn)檫@些數(shù)據(jù)都是連續(xù)交替的存放的,只要數(shù)據(jù)格式一定,對(duì)應(yīng)數(shù)據(jù)的位置也是固定的,所以這里只需要給“l(fā)ayer_para.fb.addr[0]”設(shè)置地
當(dāng)顯示數(shù)據(jù)是 YUV 數(shù)據(jù)時(shí),常常 Y、U、V 數(shù)據(jù)是分開存儲(chǔ)或者 Y 數(shù)據(jù)和 UV 數(shù)據(jù)是分開存儲(chǔ)的,所以可能會(huì) 存 在 多 個(gè) buf 地 址 的 情 況 , 這 時(shí) 就 要 用 到 “ layer_para.fb.addr[0] ” 、 “ layer_para.fb.addr[1] ” 、“l(fā)ayer_para.fb.addr[2]”參數(shù)配合使用。設(shè)置好地址后,DE 會(huì)自動(dòng)將 BUF 合并,然后將圖層傳送到 Tcon 中。

10.3. 顯示寬高參數(shù)關(guān)系

在這里插入圖片描述
各個(gè)寬高參數(shù)間有對(duì)應(yīng)的關(guān)系。寬高和位置的設(shè)置,主要是為了靈活地顯示一張圖片中的內(nèi)容。當(dāng)只需要顯示一張圖片的某個(gè)部分、或者僅將圖片在屏幕的某個(gè)位置上顯示時(shí),就需要對(duì)各個(gè)寬高進(jìn)行特定配置。傳入?yún)?shù)中的圖層 buf,我們可以認(rèn)定為這是一整張圖片,稱這個(gè) buf 為“frame buffer”,其寬高為“l(fā)ayer_para.fb.size.width ”和“l(fā)ayer_para.fb.size.height”,而我們可以設(shè)置一個(gè)窗口,讓我 們 在 顯 示 過(guò) 程 中 , 僅 顯 示 窗 口 中 的 內(nèi) 容 , 這 個(gè) 窗 口 從 ( layer_para.src_win.x ,
layer_para.src_win.y ) 坐 標(biāo) 開 始 , 顯 示 寬 為 “l(fā)ayer_para.src_win.width ” 、 高 為
“l(fā)ayer_para.src_win.height”的內(nèi)容。這里可以看出,“src_win”的寬高必須要比“fb.size”的寬高小
或者相等,且坐標(biāo)也不能越界,否則顯示是不正常的。
當(dāng)截取到一個(gè)窗口后,這個(gè)窗口的數(shù)據(jù)將鋪滿“SCN”(顯示窗口),“src_win”和“scn_win”
的比值,將是這個(gè)窗口被拉伸縮小的倍數(shù),當(dāng)然,最好不要設(shè)置比較奇怪的比值(一般的比值
都是 1、2、1/2)否則將會(huì)讓顯示不成功,或者顯示不正常。
最后,顯示窗口“scn_win”將從(scn_win.x ,scn_win.y)點(diǎn)開始在屏幕上顯示,顯示寬為
“scn_win.width”,高為“scn_win.height”的圖層。

-. 全志相關(guān)工具和資源

-.1 全志固件鏡像修改工具 ImageModify.exe 下載

在這里插入圖片描述
下載地址:
固件鏡像修改工具 ImageModify.exe下載 ImageModify_20230906.rar

-.2 全志固件USB刷機(jī)工具 PhoenixSuit 下載

在這里插入圖片描述
下載地址:
USB刷機(jī)工具 PhoenixSuit下載 PhoenixSuit_CN_V1.1.1_20230906.rar

-.3 全志Melis2.0 用戶手冊(cè).pdf下載

下載地址:
全志Melis2.0 用戶手冊(cè).pdf下載 documents_20230906_melis_v2.0.rar

-.4 全志melis2.0 sdk源碼庫(kù)下載

下載地址:
全志melis2.0 sdk源碼庫(kù)下載 melis2.0-sdk-release_20230906V2.0.rar

http://m.aloenet.com.cn/news/38863.html

相關(guān)文章:

  • 官方網(wǎng)站建設(shè)條件博客網(wǎng)站注冊(cè)
  • 搜索網(wǎng)站怎么做東營(yíng)優(yōu)化路網(wǎng)
  • 安徽平臺(tái)網(wǎng)站建設(shè)找哪家國(guó)產(chǎn)最好的a級(jí)suv88814
  • 哈爾濱企業(yè)展示型網(wǎng)站建設(shè)搜索引擎優(yōu)化期末考試答案
  • wordpress最簡(jiǎn)單的主題濱州seo排名
  • 提高網(wǎng)站流量網(wǎng)絡(luò)推廣網(wǎng)站推廣方法
  • 濰坊網(wǎng)站制作 熊掌號(hào)今日熱搜榜排名最新
  • 最好的wordpress主題北京網(wǎng)站優(yōu)化方式
  • 網(wǎng)站用自己的電腦做服務(wù)器北京百度seo排名點(diǎn)擊軟件
  • 網(wǎng)站建設(shè)模板成功案例網(wǎng)絡(luò)營(yíng)銷推廣技術(shù)
  • 營(yíng)銷網(wǎng)站制作seo外貿(mào)公司推廣
  • 網(wǎng)站例子友情鏈接作用
  • 外國(guó)網(wǎng)站上做雅思考試競(jìng)價(jià)排名深度解析
  • 網(wǎng)站建設(shè)的七個(gè)流程步驟2345網(wǎng)址大全
  • 如何建做校園購(gòu)物網(wǎng)站注冊(cè)一個(gè)網(wǎng)站
  • 做甜品的網(wǎng)站蘇州優(yōu)化收費(fèi)
  • 網(wǎng)站備案歸哪里管網(wǎng)頁(yè)快速收錄
  • 定西市小企業(yè)網(wǎng)站建設(shè)建設(shè)百度競(jìng)價(jià)怎么做效果好
  • 商城網(wǎng)站制作多少錢58同城如何發(fā)廣告
  • 互聯(lián)網(wǎng)大會(huì)官網(wǎng)東莞seoseo關(guān)鍵詞排名優(yōu)化
  • 電子產(chǎn)品網(wǎng)站開發(fā)背景百度的排名規(guī)則詳解
  • 泰國(guó)做彩票網(wǎng)站seo關(guān)鍵詞排名怎么提升
  • 淅川做網(wǎng)站關(guān)鍵詞指數(shù)查詢工具
  • jsp是做網(wǎng)站后臺(tái)的嗎樂(lè)陵seo外包
  • 國(guó)家住房和城鄉(xiāng)建設(shè)部網(wǎng)站百度怎么發(fā)帖做推廣
  • 找團(tuán)隊(duì)做網(wǎng)站需要明確哪些東西現(xiàn)在如何進(jìn)行網(wǎng)上推廣
  • c4d一般要學(xué)多久濱州seo招聘
  • 網(wǎng)店代運(yùn)營(yíng)公司方案seo查詢愛(ài)站
  • 佛山網(wǎng)站搭建公司哪家好性能優(yōu)化大師
  • 黃做網(wǎng)站游戲推廣員平臺(tái)