中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

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

做網(wǎng)站的服務(wù)器要什么格式高端營銷型網(wǎng)站建設(shè)

做網(wǎng)站的服務(wù)器要什么格式,高端營銷型網(wǎng)站建設(shè),云南做網(wǎng)站報價,網(wǎng)絡(luò)優(yōu)化的基本流程提示:龍芯2K1000PMON相關(guān)記錄 文章目錄 1 PMON的發(fā)展和編譯環(huán)境PMONPMON2000 2 PMON2000的目錄結(jié)構(gòu)3 Targets目錄的組成4 PMON編譯環(huán)境的建立5 PMON2000的框架6 異常向量表7 Pmon的空間分配8 PMON的匯編部分(starto.S或sbdreset.S)的解讀Start.SC代碼部分dbginit 9 …

提示:龍芯2K1000PMON相關(guān)記錄

文章目錄

  • 1 PMON的發(fā)展和編譯環(huán)境
    • PMON
    • PMON2000
  • 2 PMON2000的目錄結(jié)構(gòu)
  • 3 Targets目錄的組成
  • 4 PMON編譯環(huán)境的建立
  • 5 PMON2000的框架
  • 6 異常向量表
  • 7 Pmon的空間分配
  • 8 PMON的匯編部分(starto.S或sbdreset.S)的解讀
    • Start.S
    • C代碼部分
    • dbginit
  • 9 Bonito的空間分配
  • 10 PCI的空間分配
  • 開發(fā)時需要注意的問題


1 PMON的發(fā)展和編譯環(huán)境

PMON

  • 科大那個PMON就是這個版本的。該版本的功能有:shell, net, load, debug。不支持硬盤,顯卡。并且擴展性不好。
  • 該版本的編譯器是sde-gcc.

PMON2000

  • 現(xiàn)在龍芯1和2用的BIOS, 在原來的PMON的基礎(chǔ)上添加了硬盤支持,文件系統(tǒng)ext2的支持,顯卡的支持。修復(fù)了debug功能,擴展性也得到提高。比較容易移植到新的系統(tǒng)。
  • 編譯器為mips-elf-gcc

2 PMON2000的目錄結(jié)構(gòu)

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

3 Targets目錄的組成

每個系統(tǒng)一個目錄,我們拿Bonito來為例子,主要有下列文件:

  • start.S 位于Targets/Bonito/Bonito目錄下,是C環(huán)境建立之前的匯編代碼,使整個BIOS運行的起點。
  • tgt_machdep.c位于Targets/Bonito/Bonito目錄下,一些板子相關(guān)的函數(shù)。
  • pci_machdep.c進行Targets/Bonito/pci空間分配的一些函數(shù)
  • Targets/Bonito/dev目錄下一些板子特殊的設(shè)備的驅(qū)動。
  • Targets/Bonito/conf目錄下是一些編譯環(huán)境建立需要的一些文件

4 PMON編譯環(huán)境的建立

  • 將comp.tar.gz在/usr/local解開
  • 將/usr/local/comp/mips-elf/gcc-2.95.3/bin加入到PATH目錄下
  • 進入pmon2000的tools目錄下make,建立一些conf需要的工具。
  • 進入pmon2000的Targets/Bonito/conf目錄中
  • 編輯conf目錄下Bonito文件,選擇需要編譯的模塊
  • tools/pmoncfg/pmoncfg Bonito(conf類型文件)。形成目標(biāo)主目錄下的compiler目錄
  • 進入Targets/Bonito/compiler/Bonito的目錄,make形成pmon。
  • Makefile是根據(jù)Targets/Bonito/conf/Makefile.Bonito文件形成的。
  • 鏈接腳本是為Targets/Bonito/conf/ld.script。

5 PMON2000的框架

在這里插入圖片描述

6 異常向量表

在這里插入圖片描述

7 Pmon的空間分配

在這里插入圖片描述

8 PMON的匯編部分(starto.S或sbdreset.S)的解讀

在這里插入圖片描述

Start.S

當(dāng)整個板子起電后,CPU將從0xBFC00000取指令開始執(zhí)行,而ROM在系統(tǒng)中的地址就是從該地址開始的,所以其中的第一條指令就是整個CPU的第一個指令,在MIPS中,異常處理入口有兩套,通過CP0的STATUS寄存器位BEV來決定,當(dāng)BEV=1時,異常的入口地址為0xBFC00000開始的地址,而BEV=0,異常地址為0x80000000開始的地址,所以PMON程序段開始處是一些異常的調(diào)入口,需要跳過這段空間,程序通過一個跳轉(zhuǎn)bal指令跳到后面.

       bal     locate nopbal		uncachednopbal		locatenop	
uncached:or      ra, UNCACHED_MEMORY_ADDRj       ranop

此處是可以從cache空間轉(zhuǎn)換到uncache的空間,ra中保留的是bal locate這條指令的地址,然后或上UNCACHED_MEMORY_ADDR,該地址就變成uncache的地址了.

  la      s0, start            subu    s0, ra, s0and     s0, 0xffff0000 

這段代碼是為了訪問數(shù)據(jù),因為這段匯編在Rom執(zhí)行,而編譯出來的數(shù)據(jù)段在0x8002xxxx,為了能夠訪問數(shù)據(jù)段的數(shù)據(jù),需要進行一個地址的修正,s0這是起到這種修正的目的。

  • 初始化CPU內(nèi)的寄存器,清TLB.
  • 初始化一些北橋的基本配置,以確保uart能夠正常工作.
  • 初始化uart,主要是設(shè)置波特率.
  • 初始化內(nèi)存(主要通過I2C協(xié)議從內(nèi)存的EEPROM讀取內(nèi)存參數(shù)來進行設(shè)置).
  • 初始化cache.
    拷貝pmon的代碼到內(nèi)存,然后通過
la      v0, initmips
jalr    v0
nop 

從此代碼便到內(nèi)存中間去了,從這開始因為可以讀寫內(nèi)存,所以有了棧,故可以用C的代碼了,所以以后的程序便是C代碼了.

C代碼部分

Ram中運行,入口為initmips
在文件Targets/Boniton/Bonito/tgt_machdep.c中

void initmips(unsigned int memsz)
{tgt_cpufreq();cpuinfotab[0] = &DBGREG;dbginit(NULL);bcopy(MipsException, (char *)TLB_MISS_EXC_VEC, MipsExceptionEnd - MipsException);bcopy(MipsException, (char *)GEN_EXC_VEC, MipsExceptionEnd - MipsException);CPU_FlushCache();CPU_SetSR(0, SR_BOOT_EXC_VEC);main();
}

主要初始化在dbginit函數(shù)中執(zhí)行。

dbginit

 void dbginit (char *adr)
{__init();       /* Do all constructor initialisation */envinit ();                                                                                                                   tgt_devinit();                                                                                                                        
#ifdef INETinit_net (1);
#endif                                                                                                                        
#if NCMD_HIST > 0histinit ();
#endif
#if NMOD_SYMBOLS > 0syminit ();
#endif#ifdef DEMOdemoinit ();
#endif                                                                                                          initial_sr |= tgt_enable (tgt_getmachtype ());                                                                                                             
#ifdef SR_FRStatus = initial_sr & ~SR_FR; /* don't confuse naive clients */
#endifioctl(STDIN, TCGETA, &consterm);
...
...
...
}//gdbinit 
 __init();初始化一些數(shù)據(jù)結(jié)構(gòu).
Envinit ();初始化環(huán)境變量.
tgt_init();初始化與板級相關(guān)的過程,在我們系統(tǒng)中主要是初始化北橋和PCI.
inet_init();初始化網(wǎng)絡(luò).
Hisinit();初始化命令歷史記錄.
Ioctl(STDIN,TCGETA,&consterm);建立終端.	

9 Bonito的空間分配

在這里插入圖片描述

10 PCI的空間分配

tgt_devinit()
_pci_businit()
_pci_hwinit
pci_hwinit() 為Pmon主要初始化PCI在北橋的窗口的函數(shù) ,這個函數(shù)在Target/Ev64240/pci/pci_machdep.c中定義

    pd = pmalloc(sizeof(struct pci_device));pb = pmalloc(sizeof(struct pci_bus));                                                                                                                   pd->pa.pa_flags = PCI_FLAGS_IO_ENABLED | PCI_FLAGS_MEM_ENABLED;pd->pa.pa_iot = pmalloc(sizeof(bus_space_tag_t));pd->pa.pa_iot->bus_reverse = 1;pd->pa.pa_iot->bus_base = PCI0_IO_SPACE_BASE - PCI0P_IO_SPACE_BASE;pd->pa.pa_memt = pmalloc(sizeof(bus_space_tag_t));pd->pa.pa_memt->bus_reverse = 1;pd->pa.pa_memt->bus_base = 0;pd->pa.pa_dmat = &bus_dmamap_tag;pd->bridge.secbus = pb;_pci_head = pd;pb->minpcimemaddr  = PCI0P_MEM_SPACE_BASE;pb->nextpcimemaddr = PCI0P_MEM_SPACE_BASE + PCI0_MEM_SPACE_SIZE;pb->minpciioaddr  = PCI0P_IO_SPACE_BASE;pb->nextpciioaddr = PCI0P_IO_SPACE_BASE + PCI0_IO_SPACE_SIZE;pb->pci_mem_base   = PCI0_MEM_SPACE_BASE;pb->pci_io_base    = PCI0_IO_SPACE_BASE;

建立PCI的空間分配的數(shù)據(jù)結(jié)構(gòu).其中pci_mem_base為Memory空間的基地址,pci_io_base 為IO空間的基地址. minipciioaddr 為IO空間的最小可以分配地址, minipcimemaddr 為 Memory 空間的最小可以分配地址. nextpcimemaddr 為PCI的 Memory 空間的下一個分配地址, nextpciioaddr 為PCI的IO空間的下一個分配地址,在pmon的中地址分配是逆序分配的.

pb->max_lat = 255;
pb->fast_b2b = 1;
pb->prefetch = 1;
pb->bandwidth = 4000000;
pb->ndev = 1;
_pci_bushead = pb;
_pci_bus[_max_pci_bus++] = pd;

開發(fā)時需要注意的問題

  • Debug的方法
    – 在串口設(shè)備沒有初始化前, 利用邏輯分析儀進行測試。該方法debug很艱難,所以應(yīng)該盡早初始化串口。
    – 串口工作后,可以利用串口進行類似printf的Debug方法。
    – 初始化BIOS系統(tǒng)的Shell后,可以利用BIOS系統(tǒng)中的Debug系統(tǒng)進行測試。
  • 地址空間是否正確,北橋上的窗口分配是否正確。
  • 中斷問題。
  • 充分利用Pmon所帶的調(diào)試手段。pmon>h可以看到pmon提供的命令,通過這些命令來檢查地址分配是否正確。
http://www.risenshineclean.com/news/63833.html

相關(guān)文章:

  • 專做正品 網(wǎng)站青島網(wǎng)絡(luò)科技公司排名
  • 用html5做網(wǎng)站百度經(jīng)驗網(wǎng)站怎么制作
  • 南京代做網(wǎng)站制作外鏈怎么打開
  • 上海網(wǎng)站制作顧問交換神器
  • avada做網(wǎng)站有必要買優(yōu)化大師會員嗎
  • 做啤酒行業(yè)的網(wǎng)站湖南疫情最新消息
  • 做網(wǎng)站 技術(shù)seo職位
  • 網(wǎng)站適合用angular做嗎十大免費引流平臺
  • 網(wǎng)站開發(fā)作業(yè)總結(jié)寫軟文一篇多少錢合適
  • 做外貿(mào)沒網(wǎng)站可以嗎小說推廣平臺有哪些
  • 海原縣城鄉(xiāng)建設(shè)局網(wǎng)站線上渠道推廣怎么做
  • 新手做電商怎么做推廣排名seo
  • 新聞網(wǎng)站建設(shè)源碼今日國內(nèi)新聞大事20條
  • 無錫外貿(mào)網(wǎng)站制作公司搭建一個網(wǎng)站的流程
  • 網(wǎng)站建設(shè)維護保密協(xié)議seo需要掌握哪些技術(shù)
  • 網(wǎng)站移動端做pc端的301跳轉(zhuǎn)湖南網(wǎng)站seo公司
  • 怎么做交易貓釣魚網(wǎng)站片多多可以免費看電視劇嗎
  • 貴陽做網(wǎng)站多少錢免費網(wǎng)站seo優(yōu)化
  • 設(shè)置網(wǎng)站開場動畫合肥正規(guī)的seo公司
  • wordpress 微博圖標(biāo)關(guān)鍵詞優(yōu)化和seo
  • 網(wǎng)站開發(fā)原則愛站小工具圣經(jīng)
  • 多商城入住網(wǎng)站建設(shè)seo外包
  • 定陶網(wǎng)站建設(shè)怎么制作網(wǎng)頁
  • 網(wǎng)站百度知道怎么做推廣營銷軟文廣告
  • 網(wǎng)站的推廣方式組合網(wǎng)絡(luò)營銷推廣渠道有哪些
  • 深圳網(wǎng)站建設(shè) 設(shè)計科技外貿(mào)網(wǎng)站建站和推廣
  • 網(wǎng)站搭建語言網(wǎng)絡(luò)營銷成功案例介紹
  • 美橙互聯(lián)網(wǎng)站建設(shè)案例游戲推廣怎么快速拉人
  • 電商網(wǎng)站策劃書俄羅斯搜索引擎yandex推廣
  • 珠寶玉器監(jiān)測網(wǎng)站建設(shè)方案2024年2月疫情又開始了嗎