ZHCUAV8W january 1998 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
借助 C I/O 函數(shù),能夠訪問(wèn)主機(jī)的操作系統(tǒng)以執(zhí)行 I/O。具備在主機(jī)上執(zhí)行 I/O 的能力,您便可在調(diào)試和測(cè)試代碼時(shí)擁有更多的選擇。
I/O 函數(shù)在邏輯上分為多個(gè)層級(jí):高級(jí)別、低級(jí)別和器件驅(qū)動(dòng)程序級(jí)。
借助恰當(dāng)編寫的器件驅(qū)動(dòng)程序,C 標(biāo)準(zhǔn)高級(jí)別 I/O 函數(shù)可用于在用戶定義的自定義器件上執(zhí)行 I/O 操作。這提供了一種在任意器件上使用高級(jí)別 I/O 函數(shù)的復(fù)雜緩沖技術(shù)的簡(jiǎn)易方法。
超長(zhǎng)型數(shù)據(jù)類型的格式規(guī)則要求格式字符串中使用 ll(小寫 LL)。例如:
printf("%lld", 0x0011223344556677);
printf("llx", 0x0011223344556677);默認(rèn)主機(jī)所需的調(diào)試器:若要讓默認(rèn)主機(jī)器件正常工作,必須使用調(diào)試器來(lái)處理 C I/O 請(qǐng)求;默認(rèn)的主機(jī)器件無(wú)法在嵌入式系統(tǒng)中自行工作。若要在嵌入式系統(tǒng)中工作,您需要為系統(tǒng)提供適當(dāng)?shù)尿?qū)動(dòng)程序。
C I/O 函數(shù)莫名失?。?/strong>如果堆上沒(méi)有足夠的空間用于 C I/O 緩沖區(qū),文件上的操作將會(huì)以靜默方式失敗。如果 printf() 調(diào)用莫名失敗,那么原因可能就是這個(gè)。堆必須足夠大,至少應(yīng)足以分配執(zhí)行 I/O 的每個(gè)文件所需的塊大小 BUFSIZ(在 stdio.h 中定義),包括 stdout、stdin 和 stderr,以及用戶代碼執(zhí)行的分配和分配記賬開(kāi)銷。也可以聲明一個(gè)大小字符數(shù)組 BUFSIZ,并將其傳遞給 setvbuf 來(lái)避免動(dòng)態(tài)分配。要設(shè)置堆大小,請(qǐng)?jiān)阪溄訒r(shí)使用 --heap_size 選項(xiàng)(請(qǐng)參閱 ARM 匯編語(yǔ)言工具用戶指南 中的鏈接器說(shuō)明 一章。
Open 函數(shù)莫名失敗:運(yùn)行時(shí)支持會(huì)將打開(kāi)的文件總數(shù)限制為相對(duì)于通用處理器的較小數(shù)字。如果您嘗試打開(kāi)的文件數(shù)量超過(guò)最大值,您可能會(huì)發(fā)現(xiàn) open 函數(shù)將會(huì)莫名失敗。您可以通過(guò)從 rts.src 提取源代碼并編輯控制一些 C I/O 數(shù)據(jù)結(jié)構(gòu)大小的常量,增加可打開(kāi)文件的數(shù)量。宏命令 _NFILE 能控制一次可打開(kāi)的 FILE (fopen) 對(duì)象數(shù)量(stdin、stdout 和 stderr 均計(jì)入此總數(shù))。(另請(qǐng)參閱 FOPEN_MAX。)宏命令 _NSTREAM 能控制一次可打開(kāi)的低級(jí)別文件描述符數(shù)量(stdin、stdout 和 stderr 下的低級(jí)別文件計(jì)入此總數(shù))。宏命令 _NDEVICE 能控制一次可安裝的器件驅(qū)動(dòng)程序數(shù)量(主機(jī)器件計(jì)入此總數(shù))。