亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種TI的C66X的快速啟動方法

        2016-06-18 01:21:20潘慕晗劉云武漢數(shù)字工程研究所第二研究室430074
        電子制作 2016年6期
        關鍵詞:用戶程序環(huán)境變量代碼

        潘慕晗 劉云 武漢數(shù)字工程研究所第二研究室 430074

        ?

        一種TI的C66X的快速啟動方法

        潘慕晗劉云武漢數(shù)字工程研究所第二研究室430074

        【文章摘要】

        隨著DSP應用技術的發(fā)展,其架構(gòu)和規(guī)模不斷擴大,DSP系統(tǒng)的啟動方式也逐步向多元化和自動化發(fā)展。本文介紹C66X啟動的過程并分析NOR FLASH啟動的原理。通過對二級引導中的交互程序進行研究,實現(xiàn)了DSP的快速啟動以及具有較好交互性的操作界面。

        【關鍵詞】

        C66X;NOR FLASH啟動;bootloader;交互

        【Abstarct】

        As DSP develops to the 21st century, its architecture and scale has changed a lot. Boot Method is also progressing towards the development of diversified automation point of view. Introduce the process of C66X-boot, Analyze the advantage of NOR-FLASH-Boot. Design the user interface program in the 2ndbootloader.Readlize the flexible quick-boot, and a better interface environment.

        【Keyword】

        C66X; NOR-FLASH-Boot; bootloader; interactive

        0 引言

        自2010年TI公司推出keystone C66X系列的DSP之后,關于該系列DSP的啟動方式也成為技術難點之一。C66X系列DSP板提供了多種方式啟動:本地的或者遠程的,基于ROM的或基于flash的??偨Y(jié)一下,共有以下7種:EMIF16啟動、SRIO啟動、以太網(wǎng)啟動、PCI-e啟動、I2C啟動、SPI啟動以及Hyper-Link啟動。

        對于本地啟動,一般使用I2C模式啟動,由于啟動的代碼存放在EEPROM上,讀取速度慢,導致啟動速度較慢,耗時2-3秒。同時I2C啟動的代碼大小也受到EEPROM的容量限制。相較之下,使用EMIF16模式啟動,把啟動代碼放在NOR FLASH上,不僅啟動速度快,而且可以增加代碼的容量以及靈活性。本文主要介紹了C66X系列DSP基于NOR FLASH的加載原理,并設計了一種可以通過串口進行交互的二級引導程序。

        1 NOR FLASH啟動原理

        因為NOR FLASH是按字節(jié)尋址的,所以可以在NOR FLASH上直接執(zhí)行代碼。因此我們將一段引導代碼燒入到NOR FLASH的基地址,選擇EMIF模式啟動DSP時,該段代碼會將其后的初始化代碼搬移到指定位置。然后跳轉(zhuǎn)到C語言環(huán)境初始化程序入口地址“_c_ int00”。將這段代碼稱為一級bootloader。這段代碼的執(zhí)行時間,會隨著其后代碼的大小變化,在400微秒左右。

        初始化代碼稱為二級bootloader,依據(jù)環(huán)境參數(shù)對PLL、DDR、UART、網(wǎng)絡等進行初始化。初始化過程約10ms(初始化成功)。二級bootloader支持對用戶程序的多種方式的引導,可以進行單核引導、多核引導、網(wǎng)絡加載引導、以及直接跳轉(zhuǎn)。

        圖1 .bin文件格式

        總結(jié)來說,一級bootloader負責將代碼引導起來,二級bootloader負責將系統(tǒng)初始化。

        2 一級bootloader的分析

        一級bootloader是直接運行在NOR FLASH上的。即PC指針指向NOR FLASH的基地址時,一級bootloader就開始工作了。

        一級bootloader的工作是解析并引導其后的二級bootloader,所以二級bootloader 在NOR FLASH上的存儲格式就有一定的要求。該種文件一共分3部分,代碼入口地址、代碼段信息、結(jié)束標識。代碼入口地址,即圖1的“_c_int00”,即文件頭部的4個字節(jié)。代碼段信息包含段的大小、段的起始地址、段的內(nèi)容。根據(jù)段的大小以及起始地址,我們可以將其后的段內(nèi)容搬移到指定的位置,也就是實現(xiàn)引導過程。結(jié)束標志是在文件的尾部值為0的4字節(jié)整型。當一級bootloader識別到段大小為0時,就認為搬移工作已經(jīng)結(jié)束,然后跳轉(zhuǎn)到代碼入口地址“_c_int00”。圖1即為二級bootloader的存儲格式??偟膩碚f,一級bootloader工作就是把所有的段內(nèi)容搬移到指定的地址空間,然后再跳轉(zhuǎn)到“_c_ int00”。

        因為二級bootloader的格式是固定的,所有生成一個該格式的文件是相當重要的一個步驟。使用CCS5.5編譯生成的執(zhí)行文件(后綴.out)是ELF格式的。我們需要通過一定的工具鏈將ELF文件轉(zhuǎn)換為圖1所示的文件格式。工具鏈如圖2所示。首先,向hex6x.exe輸入.out文件以及一個.rmd的配置文件;得到一個.hex的中間文件,再將其輸入到b2ccs.exe,得到一個.dat的中間文件,再將其輸入到ccs2bin.exe,得到我們需要的.bin文件。

        《會稽志》王右軍宅記:“舊經(jīng)云:‘羲之別業(yè)有養(yǎng)鵝池、洗硯池、題扇橋存焉?!戎^之別業(yè),則疑宅不在是,或云嵊縣金庭觀,乃右軍舊宅,嘗舍讀書樓為觀,在縣東南七十二里孝嘉鄉(xiāng)。”[2]1951

        圖2 .bin文件工具鏈

        3 二級bootloader的研究與實現(xiàn)

        二級bootloader的首要工作是完成整個系統(tǒng)的初始化,包含PLL串口、I2C以及DDR等。初始化的參數(shù)是從環(huán)境變量中獲取的,如果環(huán)境變量不存在,則使用默認參數(shù)。在完成系統(tǒng)的初始化后,會提示用戶是否進入交互界面,不進入交互界面則繼續(xù)啟動用戶程序。下面主要介紹交互程序的設計。

        用戶交互界面是通過串口構(gòu)建的。啟動后,系統(tǒng)打印一些DSP的參數(shù),如DDR大小、主頻、初始化信息等,再進入自動啟動,等待數(shù)秒后按照設定的啟動模式引導用戶程序(在等待過程中,按下任意鍵可進入交互界面)。

        交互功能主要由以下幾個方面組成:

        串口輸入輸出功能,輸出使用與printf類似的sys_printf,實現(xiàn)變參打印。而輸入則使用sys_read_line,每次讀取一整行的輸入,同時實現(xiàn)退格、插入刪除、查找最近的輸入等功能。主要是實現(xiàn)上下左右、退格以及ESC鍵的功能。

        為實現(xiàn)查找最新輸入的功能,需要一個環(huán)形儲存池,用于保存前面使用過的指令。環(huán)形池使用鏈表實現(xiàn),用于實現(xiàn)上下鍵查找最近的輸入。環(huán)形池內(nèi)單個節(jié)點,包含的信息有輸入的信息cmd_t[]、輸入信息長度size_t、使用標記used、上一個節(jié)點的地址、下一個節(jié)點的地址。

        指令解析及指令庫。如查看內(nèi)存數(shù)據(jù)“dm 80000000 100”,首先在指令庫內(nèi)查找與dm對應的指令,然后進入“dm”的處理函數(shù)(查看某地址的數(shù)據(jù)),讀取輸入中的參數(shù),地址參數(shù)0x80000000,大小參數(shù)0x10,然后進行輸出0x80000000開始的0x10字節(jié)的數(shù)據(jù),并打印每個字節(jié)對應的ASCII碼,不能顯示的字符以‘.’代替。

        指令庫是由一張指令名表及指令函數(shù)組成,指令名表的每個條目由3個項組成。指令名:用于指令解析時,查找相應條目,如“dm”;指令入口:查找到指令條目后,根據(jù)條目內(nèi)的該項可以調(diào)用相應的指令函數(shù);指令說明:用于打印指令表的幫助信息。

        打印幫助信息:{"help", &cmd_help, "show the help table"}

        添加指令,需要在指令名表里,加入相應條目,同時實現(xiàn)相應的指令函數(shù)即可。

        功能函數(shù)封裝,將底層驅(qū)動與功能函數(shù)隔離。使代碼對于不同硬件平臺具有較好適應性以及可移植性。

        如對于不同的FLASH,只需要在FLASH表內(nèi)添加相應的條目以及相應的底層驅(qū)動即可。

        static FLASHTable f_table[2]=

        {{0, &S29GL_write, &S29GL_erase, "S29GL"},

        {-1, NULL, NULL, ""}};

        腳本功能,在啟動用戶程序之前,執(zhí)行一些特定的動作,以此達到不修改代碼,而增加功能。腳本會被保存在環(huán)境變量中,每次啟動都會根據(jù)環(huán)境變量中的設置來決定是否執(zhí)行腳本,以及腳本中的內(nèi)容。

        環(huán)境變量,是二級bootloader中的重要組成部分。它控制了系統(tǒng)的整體初始化,功能的選擇,用戶程序的啟動方式等。對于不同應用環(huán)境下,啟動時的參數(shù)也是不同的。如對于不同的DDR3,我們需要在環(huán)境變量中設置不同的DDR初始化參數(shù)。

        環(huán)境變量是可以在交互界面下修改的,修改后通過指令保存到設定的NOR FLASH的某片區(qū)域上。為了保證環(huán)境變量的可靠性,在環(huán)境變量的尾部加入一個CRC32的校驗。每次讀取環(huán)境變量時,把讀取的環(huán)境變量計算CRC32的值與NOR FLASH上的校驗值對比,以確認讀取到的環(huán)境變量是有效的。

        計時功能,是啟動流程控制的一個重要組成部分,主要用于超時等待和刷新打印。使得bootloader的啟動時間在一個可控的范圍內(nèi)。在主頻比較高的DSP上,選擇以1微秒為計數(shù)單位。超時等待的功能一般用在硬件初始化等待。刷新打印則是用在自啟動中,提示用戶剩余時間。

        通過實現(xiàn)以上的幾點,我們可以搭建一個簡單的交互界面。當系統(tǒng)啟動后,打印當前的版本為1.5.0以及系統(tǒng)相關參數(shù)。然后讀取環(huán)境變量的內(nèi)容(如果NOR FLASH上沒有環(huán)境變量則用默認參數(shù)),再根據(jù)環(huán)境變量對系統(tǒng)初始化并提示用戶是否進入交互界面。進入交互界面后,用戶可以輸入相應的指令來執(zhí)行一些操作。如“?”,查看幫助信息;“dm 80000000 10”,查看內(nèi)存信息;“ddr test”,測試內(nèi)存單元;“flash”,固化用戶程序等。圖3展示了一次DSP啟動,并進入交互界面的全部打印。

        圖3 DSP啟動打印信息

        4 結(jié)論

        本文通過分析TI的C66X DSP的NOR FLASH的啟動原理,研究設計了用戶交互程序,實現(xiàn)DSP的快速啟動以及多樣的啟動方式,使得用戶可以通過可視化的界面來進行程序的固化以及引導。

        【參考文獻】

        [1] 樂燕芬. ARM嵌入式系統(tǒng)啟動過程分析及實現(xiàn)[J].儀器儀表學報,2006年S3期

        [2]肖啟陽 方元 張忠慧. 基于TMS320VC55X系列DSP的外部FLASH并行二次引導加載方法研究[J].計算機應用與軟件,2013年04期

        [3] 馮林琳 耿恒山. 基于S3C6410的Uboot分析與移植[J].計算機與現(xiàn)代化,2013 年10期

        [4] 李飛平 卿粼波 滕奇志 舒君 何小海. 基于TMS320C6678的多核程序加載研究與實現(xiàn)[J]. 電子技術應用,2015年03期

        [5] 衛(wèi)晉 劉峰 龍騰. 大規(guī)模多DSP實時網(wǎng)絡加載系統(tǒng)關鍵技術研究[J]. 計算機工程與應用,2007年05期

        猜你喜歡
        用戶程序環(huán)境變量代碼
        基于最大熵模型的云南思茅松潛在分布區(qū)
        從桌面右鍵菜單調(diào)用環(huán)境變量選項
        變速箱控制系統(tǒng)Bootloader設計與實現(xiàn)
        徹底弄懂Windows 10環(huán)境變量
        創(chuàng)世代碼
        動漫星空(2018年11期)2018-10-26 02:24:02
        創(chuàng)世代碼
        動漫星空(2018年2期)2018-10-26 02:11:00
        創(chuàng)世代碼
        動漫星空(2018年9期)2018-10-26 01:16:48
        創(chuàng)世代碼
        動漫星空(2018年5期)2018-10-26 01:15:02
        嵌入式設備遠程升級方案設計
        基于三階段DEA—Malmquist模型的中國省域城鎮(zhèn)化效率測度及其收斂分析
        夫妇交换刺激做爰视频| 人妻少妇偷人精品视频| 青青草好吊色在线观看| 日本真人添下面视频免费 | 国产成人无码精品久久久露脸 | 深夜福利国产| 中文字幕乱码在线婷婷| 自拍偷自拍亚洲精品第按摩| 欧美多人片高潮野外做片黑人| 国产精成人品| 无码一区东京热| 日韩av一区二区三区在线观看 | 成人日韩精品人妻久久一区| 人妻丰满熟妇一二三区| 精品一区二区在线观看免费视频| 国产亚洲美女精品久久久2020 | 国产一区二区免费在线视频| 久久天堂av综合合色| 欧美日韩色另类综合| 久久天堂av色综合| 天堂av一区二区麻豆| 日本av一区二区三区在线| 国产 精品 自在 线免费| 国产色无码精品视频国产| 亚洲av日韩aⅴ无码电影| 精品视频一区二区杨幂| 二区免费在线视频观看| 樱桃视频影院在线播放| 免费黄色电影在线观看| 国产视频精品一区白白色| 成人高清在线播放视频| 亚洲av永久无码天堂网| 亚洲av永久无码天堂网手机版| 亚洲AV永久无码精品一区二国 | 无码国产色欲xxxxx视频| 国产丝袜精品丝袜一区二区| 国产不卡在线播放一区二区三区| 亚洲国产精品久久艾草| 最近最好的中文字幕2019免费| 亚洲中出视频| 丝袜美腿精品福利在线视频 |