導航:首頁 > 文件教程 > pb生成h和cpp文件

pb生成h和cpp文件

發布時間:2024-07-06 19:51:49

① pb的配置文件如何應用

每次系統登陸,把當前登陸的用戶、密碼保存到配置文件,不管自動的還是手動的,都保存。
open的時候:
if now() < time'09:00:00' then
//取配置文件里的用戶、密碼
//登陸
//用戶、密碼保存配置文件。(當然,自動登陸保存配置文件可以不做,只手動做)
end if從用途方面分析,PB包含兩種配置文件。分別是源碼配置文件和鏡像配置文件。
一、源碼配置文件
源碼配置文件用於編譯源碼時使用。這里的源碼是指Windows
CE公開的源碼,如驅動程序、系統應用程序等。PB在編譯平台時將這些公開的源碼即時編譯並將編譯鏈接後的文件復制到平台工程子目錄里。記得前面講過PB在開始編譯時調用cebuild.bat批處理文件,cebuild.bat執行的一個步驟是針對_DEPTREES變數指定的所有目錄執行build.exe和sysgen.bat。build.exe在編譯源碼文件時會尋找當前目錄下存放的源碼配置文件,根據配置文件的信息來編譯和鏈接,產生EXE、DLL、LIB文件。CE的源碼文件所在的目錄中都包含了相應的配置文件,這些配置文件只對當前目錄或者子目錄的源碼有效,具體分為三種:

DIRS文件:文件內容和解釋如下:
DIRS:指定哪個子目錄的源碼要被編譯
DIRS_CE:只有為CE編寫的源碼才被編譯
OPTIONAL_DIRS:指定可選的目錄(很少使用這個選項),可以只編譯指定目錄而不是全部編譯。

SOURCES文件:通過宏定義來指定編譯和鏈接涉及到的文件,文件內容和解釋如下:
TARGETNAME:指定編譯鏈接產生的主文件名
TARGETTYPE:指定編譯鏈接產生的文件的類型(決定了擴展名)。文件共分三種:.lib(LIBRARY)和.dll(DYNLINK)和.exe(PROGRAM)。
TARGETLIBS:定義.lib鏈接文件,鏈接時需要這個文件。
SOURCES:源碼文件。包含擴展名為*.c或*.h
或*.cpp的文件。
EXEENTRY:.exe文件的執行代碼入口點。
sources.cmn文件是通用的SOURCES文件。在這個文件中可以指定作用於所有源碼文件的配置選項。

MAKEFILE文件:包含默認的編譯和鏈接選項
整個編譯和鏈接過程:build.exe收集編譯和鏈接需要的數據(源碼文件、鏈接文件、編譯和鏈接選項)產生一系列的內部環境變數,然後調用nmake.exe,nmake.exe根據內部環境變數執行編譯、鏈接,最後產生最終文件(*.lib
*.exe *.dll)。
二、鏡像配置文件:
鏡像配置文件用於在製作CE鏡像文件時使用。CE的鏡像文件擴展名為.bin。製作鏡像工具romimage.exe除了能夠產生.bin文件外,還能夠產生.abx和.sre文件。整個鏡像的製作過程由makeimg.exe控制,它調用cenlscmp.exe、fmerge.exe、res2.exe、txt2ucde.exe、regcomp.exe、romimage.exe等。這些工具大部分在前面已經介紹過了。鏡像配置文件類型有.bib、.reg、.db、.dat、.str。如果主文件名為Common,表示是通用的配置文件。如果主文件名為Platform,表示是某一個BSP的配置文件。如果主文件名是Project,表示是定製的一個平台的配置文件。在PB中修改配置文件前如果沒有把握最好先做好備份。
.bib(Binary image builder)

定義包含在內核鏡像中的文件和模塊的名稱、載入位置。主要的bib文件有Common.bib,Config.bib, Project.bib,
Platform.bib等。.bib文件內部分為幾個部分:
【MEMORY】用於定義有效的物理內存塊,在此將整個RAM分為幾個部分。
格式: 名稱 首地址 大小 內存類型
名稱: 內存區域的唯一名稱(RESERVE是預定義名稱,可以用多次,表示此區域保留)
首地址: 內存區域的首地址(十六進製表示)
大小: 內存區域的大小(十六進製表示)
內存類型:分為三種。
RAM: 運行所有進程的內存區域(整個區域必須是連續的,且不能含空洞)
RAMIMAGE:專用於保存鏡像的內存區域。(每個.bin中只能指定一個RAMIMAGE)
RESERVED:保留內存區域(這樣的區域一般用於驅動程序使用,如顯卡緩沖區、DMA緩沖區)
舉例:
;名稱 首地址 大小 內存類型
IF IMGRAM64
NK 80220000 009E0000 RAMIMAGE
RAM 80C00000 03000000 RAM
UMABUF 83C00000 00400000 RESERVED
ENDIF

註:整個內核的地址都是從0x8000 0000開始的。如果是x86系列的CPU,那麼物理內存地址與虛擬地址映射關系在oeminit.asm中指定。
【CONFIG】類似環境變數,PB預設置了一些配置變數。常用的配置及說明如下:
AUTOSIZE:
格式:AUTOSIZE = OFF | ON

默認值為OFF。在config.bib中的MEMORY部分定義了有效的內存區域,其中兩部分RAM、RAMIMAGE分別用於進程使用區域和保存鏡像區域。如果為ON,romimage.exe在創建nk.bin時將RAM和RAMIMAGE兩部分合並成一個部分,然後從最低地址開始保留RAMIMAGE大小的內存,其餘都作為RAM使用。
BOOTJUMP:
格式:BOOTJUMP = address | NONE

默認值為NONE。每次重新啟動CE內核,默認執行的代碼從RAMIMAGE的首地址開始。如果在BOOTJUMP指定一個地址(必須在RAMIMAGE范圍內),那麼將從指定的地址開始執行。
COMPRESSION:
格式:COMPRESSION = OFF | ON

默認值為ON。romimage.exe在創建內核時默認壓縮所有可寫部分。對於文件,默認全部壓縮。對於模塊(.exe、.dll),默認壓縮可寫部分。模塊的可寫部分包括數據段,也就是在模塊運行時一定載入到內存中的部分。如果模塊在.bib中定義時具有C屬性(表明壓縮模塊所有部分),那麼當前這個選項就忽略了。
FSRAMPERCENT:
格式:FSRAMPERCENT = number

默認值為0x80808080。指定為文件系統分配的內存的百分比。number分為四個位元組,由十六進製表示。
byte0的值(單位為4KB)表示在第一個2MB中,其中每1MB包含的4KB的整數倍。
byte1的值(單位為4KB)表示在第二個2MB中,其中每1MB包含的4KB的整數倍。
byte2的值(單位為4KB)表示在第三個2MB中,其中每1MB包含的4KB的整數倍。
byte3的值(單位為4KB)表示在剩下的內存中,每1MB包含的4KB的整數倍。

計算一下默認值0x80808080表示的百分比:0x80*4K/1M = 0.5,因為每個位元組都等於0.5,所以整個佔用的百分比是50%。
KERNELFIXUPS:
格式:KERNELFIXUPS = OFF | ON

默認值為ON。如果為ON,romimage.exe創建內核前重定位內核到RAM的開始位置。
OUTPUT:
格式:OUTPUT = path

指定romimaeg.exe將創建完成的內核文件nk.bin放置到的路徑。一般放置到%_FLATRELEASEDIR%下。
ROMFLAGS
格式:ROMFLAGS = Flags

設置內核選項的位掩碼,多個位掩碼可以組合使用。

0x0001 禁止按需分頁:EXE和DLL默認是按需分頁的。

0x0002
禁止全內核模式:進程運行在兩種模式下,用戶模式和內核模式。全內核模式下所有線程運行在內核模式。全內核模式能夠提高執行效率,但會增加系統的不穩定性。如果允許執行用戶程序,那麼不適合採用全內核模式。

0x00000010
只信任來自ROM的模塊(DLL、EXE)。默認ROM中的模塊和所有文件系統的模塊都是內核信任的。OEM能夠在OAL層實現對所有運行模塊的檢查,這個標志將忽略對來自ROM保存的模塊的檢查。

0x00000020 停止刷新TLB。這個標志僅用於運行在x86CPU上的內核。TLB(Translation Look-aside
Buffer),有人翻譯成變換索引緩沖區,它的作用是在虛擬地址和物理地址之間轉換。對於具有實時性的內核,這個標志應該設置。

0x00000040 按照/base鏈接選項中的地址載入DLL。這樣內核將不採用重定位載入DLL。不建議採用。
ROMSIZE
格式:ROMSIZE = size

指定內核鏡像的大小
ROMSTART
格式:ROMSTART = address

指定內核鏡像的首地址
ROMWIDTH
格式:ROMWIDTH = width

指定數據寬度,一般為32位
ROMOFFSET
格式:ROMOFFSET = address

指定偏移地址。
SRE
格式:SRE = OFF | ON

指定romimage.exe是否產生.src文件,一般燒錄ROM的程序能夠識別此文件。

註:config中絕大多數【CONFIG】選項不需要修改。凡是配置文件都可以使用IF/ENDIF
條件語句。
【MODULES】定義鏡像要包含的模塊並指定模塊(DLL、EXE)如何被載入到內存表中。
格式:模塊名稱 路徑 內存塊 類型

模塊名稱一般為模塊的真實名稱;路徑為當前文件所處的位置(路徑中指定的文件名和前面模塊名稱最好一致);內存塊是指這個模塊將被存放到哪個內存塊中,內存塊的定義見前面MEMORY部分;類型指定這個模塊將被存放的屬性,具體類型如下:

S:系統文件

H:隱藏文件

R:只壓縮模塊的資源部分(默認模塊是不壓縮的)

C:壓縮模塊所有部分

D:禁止調試

N:標志模塊是非信任的

P:忽略CPU類型

K:指定romimage.exe修正模塊(僅用於調試或者內核跟蹤)

X:指定romimage.exe對

② .proto 文件怎麼生成.h文件

打開命令行程序,輸入如下語句:
protoc -I=../script --cpp_out=../protoc ../script/Package.proto
將會產生兩個名為Package.pb.cc和Package.pb.cc的文件。

③ 關於hbase的問題,開啟hbase後一會hmaster和hregionserver就沒了

一、通常向HBase批量導入數據有三種常用方式
1、使用HBase提供的TableOutputFormat,原理是通過一個Maprece作業將數據導入HBase
2、還有一種方式就是使用HBase原生Client API(put)
3、前兩種方式因為須要頻繁的與數據所存儲的RegionServer通信。一次性入庫大量數據時,特別佔用資源,所以都不是很有效。因為HBase在HDFS中是以HFile文件結構存儲的,所以高效便捷的方法就是直接生成HFile文件然後使用Bulk Load方法,即HBase提供的HFileOutputFormat類。
二、Bulk Load基本原理
Bulk Load處理由兩個主要步驟組成:
1、生成HFile文件
Bulk Load的第一步會執行一個Maprece作業,其中使用到了HFileOutputFormat輸出HBase數據文件:StoreFile。
HFileOutputFormat的作用在於使得輸出的HFile文件能夠適應單個region。使用TotalOrderPartitioner類將map輸出結果分區到各個不同的key區間中,每一個key區間都相應著HBase表的region。
2、導入HBase表
第二步使用completebulkload工具將第一步的結果文件依次交給負責文件相應region的RegionServer,並將文件move到region在HDFS上的存儲文件夾中。一旦完畢。將數據開放給clients。
假設在bulk load准備導入或在准備導入與完畢導入的臨界點上發現region的邊界已經改變,completebulkload工具會自己主動split數據文件到新的邊界上。可是這個過程並非最佳實踐,所以用戶在使用時須要最小化准備導入與導入集群間的延時,特別是當其它client在同一時候使用其它工具向同一張表導入數據。
Bulk Load常遇到的一個ERROR:」java.io.IOException: Retry attempted 10 times without completing, ling out」
錯誤解析:
我們使用的Hbase1.0.2版本下,如果Hfile文件 跨越多個region,bulkload會自動地將Hfile文件split,但是對於每次retry只會將指定的Hfile文件split一次。但是在hbase-site.xml配置文件里有個參數hbase.bulkload.retries.number控制了hbase對一個hfile最多plit多少次。這個參數默認是10,如果某個hfile跨越的region數超過10個就會報上述Exception。
解決方案:
將hbase.bulkload.retries.number這個參數設置為更大的值,比如目標表的region數量或者將這個參數設置成0,0表示不斷重試直到成功。設置之後問題解決。

閱讀全文

與pb生成h和cpp文件相關的資料

熱點內容
linux解壓zip亂碼 瀏覽:839
看直播數據用哪個平台最好 瀏覽:730
win10晶元驅動程序版本 瀏覽:763
如何給word添加公式編輯器 瀏覽:666
iphone桌面文件夾怎樣合並 瀏覽:919
要我蘋果賬號密碼忘記了怎麼辦 瀏覽:578
快快卡在配置游戲文件 瀏覽:393
數據包重發時間怎麼調整 瀏覽:882
youtubeapp怎麼下載 瀏覽:366
編程檢測是什麼 瀏覽:753
網路攝像機的傳輸距離 瀏覽:941
超值貓qq群購秒殺群 瀏覽:138
pdf文件能備注嗎 瀏覽:174
html可視化數據源碼在哪裡 瀏覽:387
adobereader專用卸載工具 瀏覽:28
vivo手機數據如何備份 瀏覽:888
ithmb文件轉換器 瀏覽:66
看病找什麼網站好 瀏覽:579
linux如何查看文件系統 瀏覽:581
linux統計點頻率 瀏覽:627

友情鏈接