在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 智能命令行在SOPC系統(tǒng)中的設(shè)計(jì)

            智能命令行在SOPC系統(tǒng)中的設(shè)計(jì)

            作者: 時(shí)間:2011-04-10 來(lái)源:網(wǎng)絡(luò) 收藏

            行是計(jì)算機(jī)中最重要的組件之一。它可以幫助開(kāi)發(fā)人員更方便的控制。在調(diào)試過(guò)程中,可以讓開(kāi)發(fā)人員隨時(shí)變更測(cè)試方法。

            本文引用地址:http://www.biyoush.com/article/150863.htm

              FPGA的成本越來(lái)越低,F(xiàn)PGA上的嵌入式()也應(yīng)用得越來(lái)越廣泛。但是相對(duì)其他成熟的計(jì)算機(jī)體系,系統(tǒng)現(xiàn)在還沒(méi)有行。為了更好的推廣應(yīng)用,筆者開(kāi)發(fā)了一個(gè)行模塊,可以調(diào)用系統(tǒng)中的任意函數(shù),降低了開(kāi)發(fā)人員的使用難度。在最小配置時(shí),它只有大約1000行代碼,占用14KB存儲(chǔ)容量,可以放在完全由FPGA片內(nèi)資源構(gòu)成的計(jì)算機(jī)系統(tǒng)中。它的結(jié)構(gòu)也具有很好的擴(kuò)展性,開(kāi)發(fā)人員可以結(jié)合自己的需求,輕松添加命令,豐富它的特性。

              命令行框架

              1 總體

              好的命令行要具有擴(kuò)展性,開(kāi)發(fā)人員能輕松添加自己的命令;也要傻瓜化,簡(jiǎn)單易于使用。

              為了達(dá)到這兩個(gè)目的,可采用編譯器創(chuàng)建的數(shù)組作為命令的總索引數(shù)據(jù)結(jié)構(gòu)。為每條命令創(chuàng)建一個(gè)變量,指定它放在一個(gè)命令行專(zhuān)用的段中;其中用段“shell_cmd_tab”存放用戶(hù)主動(dòng)創(chuàng)建的命令;用段“shell_cmd_tab_auto”存放系統(tǒng)中所有全局函數(shù)。創(chuàng)建變量只需調(diào)用宏SHELL_CMD_DECL,提供命令名、命令說(shuō)明和函數(shù)名即可。這樣就可以實(shí)現(xiàn)C語(yǔ)言函數(shù)、變量、段、內(nèi)存區(qū)域的自動(dòng)映射過(guò)程。

              命令的數(shù)據(jù)結(jié)構(gòu)如下。

              typedef struct _ncommand_t {

              const char *name;

              const char *descr;

              shell_st_call cfunc;

              } ncommand_t;

              為了簡(jiǎn)化命令的創(chuàng)建,定義下面這個(gè)宏來(lái)創(chuàng)建命令。

              #define SHELL_CMD_DECL(name, usage, func) ncommand_t _shell_cmd_tab_##func _attribute_ ( (section( “.shell_cmd_tab”) ) )={ name, usage, func }; // small memory version

              創(chuàng)建命令的實(shí)例如下:SHELL_CMD_DECL(“dump”, “Shows a memory dump”, hexdump);

              2 連接腳本

              在連接腳本里指定段的位置是簡(jiǎn)化命令行使用流程的關(guān)鍵。GCC使用PROVIDE定義變量。筆者使用PROVIDE定義了各個(gè)段的起始地址和結(jié)束地址,從而可以在代碼中使用段地址查詢(xún)到所有命令。在編譯器使用的連接腳本中添加如下行定義函數(shù)表。

              .shell :

              {

              PROVIDE (__ram_shell_start = ABSOLUTE(.));

              . = ALIGN(32 / 8);

              PROVIDE (__ram_shell_cmd_tab_begin = ABSOLUTE(.));

              *(.shell_cmd_tab .shell_cmd_tab.*)

              PROVIDE (__ram_shell_cmd_tab_end = ABSOLUTE(.));

              PROVIDE (__ram_shell_cmd_tab_auto_begin = ABSOLUTE(.));

              *(.shell_cmd_tab_auto .shell_cmd_tab_auto.*)

              PROVIDE (__ram_shell_cmd_tab_auto_end = ABSOLUTE(.));

              *(.shell .shell.*)

              . = ALIGN(32 / 8);

              PROVIDE (__ram_shell_end = ABSOLUTE(.));

              } > ddr_sdram


            上一頁(yè) 1 2 下一頁(yè)

            評(píng)論


            相關(guān)推薦

            技術(shù)專(zhuān)區(qū)

            關(guān)閉