版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
07-、、海思和其他海思商標(biāo)均為深圳市海思半導(dǎo)體有限公司的商標(biāo)。 客戶服務(wù)電話 客戶服務(wù)傳真 客戶服務(wù)郵箱
062015-07-052015-06-042014-07-032014-02-5022013-12-修改3.9。8012012-09-前 MMZ和MMB分別指什么,如何配置MMZ的區(qū)域和大小 MMZ的原 用fopen打開大于4G的文件失敗,如何操作大于4G的文件 為什么NFS掛載不上 為什么無法燒寫文件系統(tǒng)?或者flash出現(xiàn)非常多的bad 為什么無法啟動(dòng)文件系統(tǒng),提示Noinit 如何使用DDR帶寬統(tǒng)計(jì)工具 為什么有時(shí)候udhcpc無法獲得IP地 當(dāng)前udhcpc如何支持DHCP+功 如何使用USB鍵盤鼠標(biāo) 為什么socket組播會(huì)丟包 GMAC網(wǎng)口ping不通 TOE怎樣使能 Atheros8035型號(hào)的phy使用注意事 網(wǎng)線插到到單板上,為什么還是會(huì)報(bào)Phyno Hi3518制作RMII軟件版 Uboot下如何調(diào)試部分不兼容的U盤 如何配置PCIe的控制時(shí)鐘 如何查看PCIe設(shè)備的BAR地址的分配信息 如何查看PCIe地址映射信息 PCIeMCC模塊的驅(qū)動(dòng)插入后為何不起作用 為什么運(yùn)SDK視頻預(yù)覽的業(yè)務(wù)后,偶爾會(huì)打印“unknowHi-irq Hi3531/Hi3532PCIeBAR地址,在reset時(shí)默認(rèn)會(huì)映射到哪個(gè)地址?在移動(dòng)窗口時(shí),有什么需要注意 PCIeMCCHi3531和Hi3531DMA寫操作,所DMA操作都由從片發(fā)起。原來主片往從片DMADMA讀操作替代。 為什么Hi3531/Hi3531級(jí)聯(lián),從片使用發(fā)布包PCIeMCC中直接編譯出來的ko會(huì)起不來 Hi3532作板卡的說 PCIeMCC支持主設(shè)備復(fù)位從設(shè)備嗎 PCIe轉(zhuǎn)sata卡讀寫數(shù)據(jù),導(dǎo)致VDP低帶寬問題的解決方 為什么Hi3531NANDFlash我配置了硬件ECC,但卻不生 Hi3531的NANDFLASH控制器支持哪幾種糾錯(cuò)方 使用大容量NAND應(yīng)該注意的地 NANDECC/PAGESIZE邏輯/硬件/軟件的配置原 為什么在NAND上,u-boot保存環(huán)境變量后,系統(tǒng)無法啟 為什么燒寫NAND時(shí),不能合并成一個(gè)文件 為什么NAND上文件系統(tǒng)讀出來后,不能再寫到NAND上使用 怎樣把SPIflash由4線模式修改為2線模式 NAND掛載cramfs文件系統(tǒng)注意事 pid和tgid區(qū) 如何設(shè)置dmesgbuf的大小 客戶跑一個(gè)很簡單的程序,top信息的loadaverage值比較大,達(dá)到2.95,而cpu的占用率比較低。 當(dāng)內(nèi)核的內(nèi)存配置為512MB或以上時(shí)為什么會(huì)出現(xiàn)如下錯(cuò)“vmapallocationforsize528384failed:usevmalloc=<size>toincrease 在使用NPTL的工具鏈之后,用top怎樣查看各個(gè)線程的CPU占有率 youmustuse'root'toexecutethis./cross.install:25:Syntaxerror:"do"unexpected(expecting./cross.install:28:Syntaxerror:"do"unexpected(expecting./cross.install:30:Syntaxerror:"do"unexpected(expectingdashsh改成bash。一般刪除原來的sh軟鏈接,重新建立一個(gè)指向bash的軟鏈接即可:cd/binrm–fln–s/bin/bashMMZMMZ驅(qū)動(dòng)管理用戶創(chuàng)建的分配池,用戶程序分配內(nèi)存的時(shí)候可以指定要在哪個(gè)分配池“mmzmedia-mem<name>ddr<gfp>MMZ位DDR3都直接將該值置為0。起始地址+linuxHi353x平臺(tái)上,內(nèi)存的起始地址固定為0x80000000;舉例說明如下:假設(shè)單板的bootargs為'mem=96M么MMZ的起始地址應(yīng)該配置為0x80000000+96M=0x86000000。的大小加上linux內(nèi)核的內(nèi)存大小不能超過物理內(nèi)存的實(shí)際大小。比如單板上的物號(hào)分隔例如:modprobemmz mmz=ddr,0,0x86000000,64M:vdec,0,0x8A000000,64M。MMBLEAK(pid=11093):0x880BA000,3686400bytes,mmz_userdev_release:mmb<0x880BA000>mappedtouserspace0x408d1000willbeforceunmaped!MMBLEAK(pid=11093):0x884FD000,2764800bytes,mmz_userdev_release:mmb<0x884FD000>mappedtouserspace0x40d14000willbeforceunmaped!MMBLEAK(pid=11093):0x8843E000,520192bytes,'decctrl'mmz_userdev_release:mmb<0x8843E000>mappedtouserspace0x40c55000willbeforceunmaped!MMBLEAK(pid=11093):0x884BD000,262144bytes,mmz_userdev_release:mmb<0x884BD000>mappedtouserspace0x40cd4000willbeforceunmaped!在makefile編譯選項(xiàng)里加上如下選項(xiàng):mount-tnfs-onolock-otcpxxx.xxx.xxx.xxx:/xxx/sdk_rootrpcbind:serverlocalhostnotresponding,timedoutRPC:failedtocontactlocalrpcbindserver(errno5).rpcbind:serverlocalhostnotresponding,timedoutRPC:failedtocontactlocalrpcbindserver(errno5).rpcbind:serverlocalhostnotresponding,timedoutRPC:failedtocontactlocalrpcbindserver(errno5).之類的打印,一般是-onolocktrying之類的打印),一般是沒有加-otcp選項(xiàng)。hisilicon#nandwrite.yaffs0x820000000x700000NANDwrite:device0offset0x700000,sizeAttempttowritenonpagealigneddata,length26380992409626380992byteswritten:yaffs文件系統(tǒng)的時(shí)候指定的pagesize和ecc參數(shù)與單板上的nandflash的nandflashpagesizeecc參數(shù)后重新“nandscrubNandFlashyaffs文件系統(tǒng)所在的區(qū)域清理一遍才能再次燒寫yaffs“nandscrub4000001000000”表示從0x400000開始清理64M。如果最后一個(gè)參數(shù)不傳,則表示從此地址開始清理至nandflash結(jié)束,比如“nandscrub400000”表示清理從0x400000開始的所有flash空間。HisiliconNandFlashControllerV300DeviceDriver,Version1.00NandID:0xAD0xDC0x100x950x540xAD0xDC0x10Nand(Hardware):Block:128KPage:2KEcc:1bitChip:512M包不支持這種類型的flash。ata2:failedtoresumelink(SControl0)SATAlinkdown(SStatus0SControl0)devis32505858nameis"mtdblock2"rwpassedflagsVFS:Mountedroot(yaffs2filesystem)ondevice31:2.Freeinginitmemory:100KKernelpanic-notsyncing:Noinitfound.Trypassinginit=optiontokernel.SeeLinuxDocumentation/init.txtforguidance.1:yaffspagesizeecctype錯(cuò)誤,這兩個(gè)參數(shù)如果nandflashyaffs文件系統(tǒng)。SDKmakebuild=mem=96Mconsole=ttyAMA0,115200root=/dev/mtdblock2rootfstype=yaffs2mtdparts=hinand:4M(boot),60M(rootfs),-(others)'bootargsrootfstype配置錯(cuò)屬性不對(duì)。正常的console文件屬性如下:cdSDKls./pub/rootbox/dev/-crw-r--r--1rootroot5,12010-10-1818:52crw-r--r--1rootroot204,642010-10-1818:52crw-r--r--1rootroot204,652010-10-1818:52crw-r--r--1rootroot204,642010-10-1818:52者代理?某些交換機(jī)會(huì)屏蔽非交換機(jī)本身動(dòng)態(tài)分配的IP地址,在boot下直接用用單板與PC直連的方式進(jìn)行tftp操作。64SDK32位搜索獲取在服務(wù)器上安裝32位運(yùn)行庫的方法。apt-getinstalllibc6-apt-getinstallgcc-multilibg++-multiliblibc6-dev-i386libzip-devapt-getinstallia32-libslib32asound2libasound2-pluginslibc6libcanberra-gtk-moduledpkg-i--force-allgetlibs-root@Athena:~$mkcramfs./tools/root.imgDirectorydata:37924bytesEverything:43936kilobytesSuperblock:76bytesCRC:warning:filesizestruncatedto16MB(minus1warning:gidstruncatedto8bits(thismaybeasecurity個(gè)文件大小大于16M的文件系統(tǒng),請(qǐng)按照下面的流程檢查修改。修改mkcramfs的源碼,使其支持制作特殊的文件系統(tǒng),從/projects/cramfs/下載cramfs的源碼,解壓之后修改例如你需要支持256M的文件,可將其設(shè)置為28。同樣的方式修改宏CRAMFS_SIZE_WIDTH
拷貝到單板的/usr/bin目錄下,gdb,加上可執(zhí)行權(quán)限(chmoda+xgdb命令,然后即可在單板上使用gdb?;蛘邟燧dnfs目錄后,使用gdb的絕對(duì)路徑運(yùn)行g(shù)db。ProgramreceivedsignalSIG32,Real-timeevent32.0x4052d940in rt_sigsuspend()from/lib/libc.so.0handleSIG32passnoprint2.運(yùn)行應(yīng)用程序,在程序正常運(yùn)行的狀態(tài)下(CTRL+Z把程序放到后臺(tái)),telnet3.telnet終端上運(yùn)行”topd1”pidCPU5.telnetgdbgdb命令行后,輸入“attachpid”,一般情況下,堆棧的最頂端(最先打印出來的那幾個(gè)函數(shù))就是CPU占用最高的那個(gè)6.CPU26參數(shù)2:value,可選改寫為valuehimmaddress對(duì)2:length,可選address開始,以大端方式打印length字節(jié)256字節(jié)。2:length,可選address開始,以小端方式打印length字節(jié)256字節(jié)。2:value,必選從address開始,把全部設(shè)置為value。 器1,默認(rèn)是0。 -wddr32bit16bit32bit 示例:hiddrsd0f400w32i1forkVMVM空間,systemVM空間失敗導(dǎo)致的。解決方法:echo1>#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<unistd.h>#include<spawn.h>#include<sys/wait.h>intmain(intargc,char*{pid_tintchar*spawnedArgs[{"/bin/ls","-l","/home",NULL};/*posix_spawn需要指定子進(jìn)程的命令的全路徑(絕對(duì)路徑)*/char*spawnedEnv[]=printf("Parentprocessid=%ld\n",if((err=posix_spawn(&pid,spawnedArgs[0],NULL, spawnedArgs,spawnedEnv))!=0{}printf("Childprocessid=%ld\n",/*Waitforthespawnedprocesstoexitreturn}udhcpc3IP請(qǐng)求,有時(shí)候服務(wù)器反映比較慢,需要增加請(qǐng)求增加請(qǐng)求次數(shù)的命令參數(shù)為udhcpct50”udhcpcDHCP+可以使用如下參數(shù)-V-D表示客戶端期待的賣主信息.例如:udhcpcVquestionDanswerfquestion到服務(wù)器服務(wù)器應(yīng)該answer到單板answer,如果不是,配置失敗,是,配置成功;
sample供參考 socket組播會(huì)丟包UDP組播數(shù)據(jù)時(shí),同時(shí)進(jìn)行其它有延時(shí)的操作(如寫碼流數(shù)據(jù)到USB存儲(chǔ)設(shè)備),應(yīng)該程序?qū)⒀舆t接收UDP數(shù)據(jù)包,而socket默認(rèn)接收緩存只有以下命令可以增加接收緩沖區(qū),>>>,內(nèi)核下的方法-“makeARCH=armCROSS_COMPILE=arm-hisiv200-linux-menuconfig菜單下,選擇以下選項(xiàng)DeviceDrivers[*]Networkdevicesupport>[*]Ethernet(1000Mbit)><M>STMicroelectronics10/100/1000EthernetdriverSTMMACMAC0PHY phySTMMACMAC1PHY phyu-boot代碼中,修改方法如下u-boot代碼中,“include\configs\godnet.h”文件#defineCONFIG_NET_STMMAC#defineCONFIG_TNK#ifdefCONFIG_NET_STMMAC#defineSTMMAC_GMACADDR #defineSTMMAC_DMAADDR #define #define #defineSTMMAC_PHYADDR0(1)<<表示phy地址是1.#defineSTMMAC_PHYADDR1(2)<<表示phy地址是2.#defineSTMMAC_PHYNAME"0:01" #defineCONFIG_PHY_GIGE#endif/*CONFIG_NET_STMMAC現(xiàn)象:PCping可以ping通。現(xiàn)象:PC端ping單板ping不通;查看IP地址對(duì)應(yīng)的MAC地址是否與單板上的MAC地址是對(duì)應(yīng)的;GMACGMAC0:himd.l0x101c1014GMAC1:himd.lTOE修改文件系統(tǒng)的/etc/init.d/S81toe啟動(dòng)腳本:insmod/hitoe/stmmac.koTOE功能:echo8192>/proc/sys/vm/min_free_kbytesecho200proc/sys/vm/vfs_cache_pressureinsmod/hitoe/stmmac.kohitoe=1在TOE模式下,不管是阻塞模式還是非阻塞模式,協(xié)議處理是由硬件完成的,當(dāng)出現(xiàn)bufferEAGAINBypass模式下,如果是阻塞模send的返回值是這樣處理的:阻塞模式與非阻塞模式下,send0&&(errnoEINTR||errnoEWOULDBLOCK||errnoEAGAIN)表示暫時(shí)發(fā)送失敗,需要重試,send返回值<=0,&&errno!=EINTR&&errno!=EWOULDBLOCK&&errno!=因此建議應(yīng)用程序在調(diào)用send時(shí),若返回值<0&&(errno==EINTR||errno==EWOULDBLOCK||errnoEAGAIN)應(yīng)該延時(shí)等待一段時(shí)間再重新嘗試發(fā)送,而不要直接調(diào)用close斷開連接,則不會(huì)出現(xiàn)此問題。IOIO的概念,socket
fcntl函數(shù)可以將一個(gè)socket句柄設(shè)置成非阻塞模式:flags=fcntl(sockfd,F_GETFL,0); //獲取文件的flags值。fcntl(sockfd,F_SETFL,flags|O_NONBLOCK);//設(shè)置成非阻塞模式;設(shè)置之后每次對(duì)于sockfd的操作都是非阻塞的。flags=fcntl(sockfd,F_GETFL,0); 設(shè)置之后每次對(duì)于sockfd的操作都是阻塞的。recv、sendflag臨時(shí)將sockfd設(shè)置為非阻塞模式,而無論原有是阻塞還是非阻塞。recv(sockfd,buff,buff_size,MSG_DONTWAIT); send(scokfd,buff,buff_size,MSG_DONTWAIT);//非阻塞模式的消息接受Atheros8035phy像通用的PHY一樣,在硬件鏈路上通過添加器件實(shí)現(xiàn)。ubootmw0x101c0014mw0x101c00100x1743mw0x101c00140x0100mw0x101c00100x1783kernelpriv->mii->write(priv->mii,0x2,0x1d,0x5);priv->mii->write(priv->mii,0x2,0x1e,0x0100);uboot下文件common/miiphyutil.c中紅色部分函數(shù)intmiiphy_speed(char*devname,unsignedcharaddr){u16bmcr,anlpar;u16btsr,val;#if
if(val&BMSR_ESTATEN){if(miiphy_is_1000base_x(devname,{return}Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2PHYnotlink!PHYnotlinkdemo板上的間的復(fù)位??赡軙?huì)導(dǎo)致插上網(wǎng)線后立即執(zhí)行網(wǎng)絡(luò)操作(ping、tftp或者其他操作)時(shí)出telnet查看串口內(nèi)部寄存3bit,這兩者只要有一個(gè)值為1,就表示出現(xiàn)串口溢出錯(cuò)誤,導(dǎo)致串口無響應(yīng)。注意,該文件基于linux-3.0.y版本。Hi3518RMII兼容硬件demo板選擇外部時(shí)鐘源),配置初值為0xe,見表格紅色部分;配置初值為0x3,見表格紅色部分;setenvmdio_intf口無法識(shí)別的usb3.0U盤。3000ms,Uusb3.0KingstonDTG3和DataTraveler111,EAGETF30,Apacer,SSK的SFD201。通過調(diào)節(jié)參數(shù)CONFIG_USB_HUB_MIN_POWER_ON_DELAY為1000ms時(shí)也可以正常配置。RC模式下的具體配置:“makeARCH=armCROSS_COMPILE=arm-hisiv100-linux在menuconfig菜單下,選擇以下選項(xiàng):BusSupport [*]PCI [*]PCIExpresssupport BusSupport [*]PCI [*]HisiliconPCIExpress EPPCIsupportBus []PCI 注意,EP模式下一定不能將該選項(xiàng)選上。EPPCIe接口外接其PCIe模塊的工作時(shí)鐘,主要有兩個(gè)來源:一個(gè)是來自芯片內(nèi)部,稱作內(nèi)部時(shí)鐘;一個(gè)是來自芯片外部,稱作外部時(shí)鐘。當(dāng)PCIe工作在RC模式下時(shí),通常使用內(nèi)部時(shí)鐘;如時(shí)鐘控制必須在PCIe系統(tǒng)控制器使能之前完成。運(yùn)行下面命令查看當(dāng)前時(shí)鐘的使用狀況(hi3531為例himd.lhimd.l0x200500B4himd.l0x200500B4另外,PCIeRChi3531為例,0x10、0x14、0x18BAR0、BAR1、BAR2的地himd.l組共有6組。每組寄存器有輸入和輸出兩個(gè)方向。寄存器組和方向的選擇,都通過Viewport寄存器控制PCIe0x900)。下面以hi3531為例,說明如何himm0x40100900himm0x40100900例如:查看已選擇的IATU寄存器組的地址映射信息himd.l0x40100900IATU0PCIeMCCPCIeMCCMCCkoMCCko時(shí),需要依賴中,PCIe編譯選項(xiàng)應(yīng)該是選上的,同時(shí)內(nèi)核必須確保已經(jīng)編譯完成了。編譯從側(cè)PCIePCIeMCC的ko來說,如果以上兩個(gè)條件有一個(gè)不滿足,都可能導(dǎo)致PCIe-網(wǎng)卡、PCIe-sata使用以上設(shè)備時(shí),請(qǐng)注意內(nèi)核中對(duì)于的配置選項(xiàng)都應(yīng)該選上(Hi3531為例DeviceDrivers[*]Networkdevicesupport>[*]Ethernet(1000Mbit)><*>SysKonnectYukon2SiliconImageDeviceDrivers*-SerialATAandParallelATAdrivers SiliconImage3124/3132SATAsupport對(duì)JMBDeviceDrivers*-SerialATAandParallelATAdrivers<*>AHCISATAsupportGeneralsetup[*]InitialRAMfilesystemandRAMdisk(initramfs/initrd)u-bootsetenvbootargs‘mem=64Mconsole=ttyAMA0,115200’setenvbootcmd‘bootm0x810000000x82000000’Hi-irqtriggered”印了上面那個(gè)信息“unknowHi-irqtriggered。Hi3531/Hi3532PCIeBAR地址,在reset時(shí)默認(rèn)會(huì)映射到哪個(gè)地址?在移動(dòng)窗口時(shí),有什么需要注意的?reset之后。Hi3531/Hi3532的地址映射沒有打開,也就是說,窗口不會(huì)映射到1M8M的窗口去映射從側(cè)的某個(gè)區(qū)域,給定的這個(gè)區(qū)域的起始地址注意也8M0x84200000,這個(gè)沒有問題;但是如果你想直接映射到0x84270000,就會(huì)有問題,因?yàn)樗皇?M對(duì)齊。如果你想操作0x84270000這個(gè)地址,你可以把窗口起始地址映射到0x84200000,然后通過偏移0x70000另外,1M1M地址的對(duì)齊,64K64K不再支持主片往從片DMA寫操作,所有DMA操作都由從DMA寫操作,可以通過從片往主片DMA讀操作替代。SPC070DMADMA寫DMA的數(shù)據(jù)傳輸,可能會(huì)導(dǎo)致一些不可預(yù)知的異常。因此,在SPC070的版本取消了對(duì)主片向從片DMA寫操作的支持,該操作可由從片DMADMADMA的數(shù)據(jù)傳輸,在實(shí)驗(yàn)PCIePCIe通道的利用率,與主片、從片同時(shí)發(fā)起DMA寫操作比較,基本一致。osdrv/drv/pcie/hi35xx_dev/slave/config.h中看到配置如下://#define 1/*Hi3531#define 1/*Hi3532#define //#define 注:宏#define //#define ////#definePCIE_SLAVE_CONNECTOR0 1/*控制器0*/#definePCIE_SLAVE_CONNECTOR1 1/*控制器1*/這里需要將CONFIG_GODCUBE關(guān)閉,并打開CONFIG_GODNET(Hi3531;由于根據(jù)實(shí)際情況配置使用從片的哪個(gè)控制器:PCIE_SLAVE_CONNECTOR0代表從片0E_LE_CECR(Hi3532Windows7WindowsPCIe擴(kuò)展配置空間的訪問。但Hi3532PCIe一些關(guān)鍵功能的實(shí)現(xiàn),比如DMA操作,窗口映射等,要求必須對(duì)PCIeWindows操作系統(tǒng),用原來直Hi3532PCIe窗口映射默認(rèn)是沒有打開的。如果不能進(jìn)行窗口映射操作,PCIe設(shè)備(Hi3532)是無法進(jìn)行地址映射和DMA操作的。PCHi3532Hi35323Bar地址中的一個(gè)(BAR2),固定用于映射到Hi3532PCIe的配置空間(4K),而這個(gè)“事先”映射,需要由Hi3532的u-boot來完成。這樣,PC就可以通過訪問這個(gè)Bar地址,來實(shí)現(xiàn)對(duì)整個(gè)PCIe配置空間的訪問。PCHi3532進(jìn)行任何操作之前,Hi3532Bar2映射到PCIe配置空間上面。為實(shí)現(xiàn)該操作,Hi3532(2MB)的flash存放啟動(dòng)的u-boot,在u-boot中將Bar2映射到本側(cè)的Hi3532spiflashu-u-bootDDR1.disableHi3532PCIe2.Hi35323.Hi3532Bar2Hi35324.Hi35325.enableHi3532PCIe0x1)DDR(DDRPC完成),u-boot正常啟動(dòng);否則PCPCIeMCCPCIeHi3532Bar2?Hi3532Bar2?Hi3532spiflash?PCIeMCCPCIeMCC復(fù)位后完全保留復(fù)位之前的設(shè)備狀態(tài),包括設(shè)備功能狀態(tài)、地址映射等(DMA相;drv/pcie_mcc/koesbooter。該文drv/pcie_mcc/multi-boot/example目$./booter$./booter更詳細(xì)的信息,請(qǐng)參考~/pcie_mcc/multi_boot/example/boot_test.c1.“makeARCH=armCROSS_COMPILE=arm-hisiv300-linux在menuconfig菜單下,選擇以下選項(xiàng):BusSupport [*]HisiliconPCIExpresssupport PCIExpressconfigs [*]limitpciemaxreadrequest2.運(yùn)行makeARCH=armCROSS_COMPILE=arm-hisiv300-linuxuImage”命令,重新編譯3.Hi3531NANDFlashECC,但卻不Hi3531NANDflashECCECC:“Nand(Auto)”nandmarkbadnandmarkbadnand#define#define _IOW('M',intunsignedlonglongfd=open("/dev/mtd1",O_RDWR);offset=0x100000;if(ioctl(fd,MEMSETBADBLOCK,{ printf("Markbadblock0x%llXfailed!\n",},相對(duì)open的對(duì)應(yīng)分區(qū)的偏移位置。Hi3531NANDFLASHHi3531NANDFlashECC214支持824bits/1414824bits/1814ECC824bits/14Bytes4bit糾錯(cuò)使用,,1bit、4Bytes、8Bytes錯(cuò)誤。24bit1K1K的數(shù)據(jù)中,最大可以糾正24bit錯(cuò)誤。2k4bytesubi/ubifs:NANDNAND>4GNAND器件。4G32位無符號(hào)整型所能表示的最大極限,超過這個(gè)界限,328G。使NANDECC/PAGESIZE邏輯/硬件/軟件的配置原理NANDECC/PAGESIZE配置從硬件到軟件的順序如下,NFC_CON中NAND啟動(dòng),NFC_CON的配置值,NAND上的內(nèi)容DDR,初始化所有已設(shè)置寄存器,NFC_CON,NFC_CON寄存器軟件啟動(dòng)后,NANDNFC_CON,NAND上u-boot保存環(huán)境變量后,系統(tǒng)無法啟NANDu-boot后,系統(tǒng)能正常啟動(dòng),但保存環(huán)境變量后,系統(tǒng)無原因如下圖所示u-boot占三個(gè)好塊NAND起始位置有三個(gè)壞塊.保存環(huán)境變量后,fastboot內(nèi)容被擦除,系統(tǒng)無法啟動(dòng).這個(gè)時(shí)候,要把環(huán)境變量地址往后挪.NAND時(shí),,,出現(xiàn)錯(cuò)誤的操作如下圖所示–NAND狀態(tài)–NAND擦除后,有發(fā)生過寫操作.擦除完成后NAND上狀態(tài):合并文件后的文件系統(tǒng),NAND上讀出來文件系統(tǒng),數(shù)據(jù)類似以下這種形把第2步的數(shù)據(jù)寫到NAND器件上后 NAND上的數(shù)據(jù)狀3步以后,文件系統(tǒng)看到的數(shù)據(jù)對(duì)于非只讀的文件系統(tǒng),NAND操作,文件系統(tǒng)自己也會(huì)有一些寫操作(比如定時(shí)垃圾回收,數(shù)據(jù)同步).2頁是因?yàn)?1.NAND上狀態(tài)),還是(3.2步的數(shù)NAND器件上后,NAND上的數(shù)據(jù)狀態(tài))2頁為空,如果對(duì)2頁進(jìn)行第2次寫操作(1次寫了0xFF),發(fā)生錯(cuò)誤。Cramfs,squahsf{{0xc2,0x20,0x19},3,_32M,_64K,{&READ_STD(0,INFINITE,40/*50*/),&READ_FAST(1,INFINITE,104),&READ_DUAL(2,INFINITE,&READ_DUAL_ADDR(1,INFINITE, &READ_QUAD_ADDR(3,INFINITE,75),{&WRITE_STD(0,256,0{&ERASE_SECTOR_64K(0,_64K,0romblock,這個(gè)設(shè)備實(shí)現(xiàn)了跳壞塊功能。?boot下的命令行中輸入:setenvbootdelay??boot下的命令行中輸入:setenvverify?boot階段做不做校驗(yàn),系統(tǒng)基本都會(huì)掛死,因此設(shè)置?bootargs,在bootargs?說明:BogoMIPScpulpj=5996544可以取消該計(jì)算過程,此舉可加快啟動(dòng)時(shí)間約0.2sbootcmd如下:setenvbootcmdnandread0x807fffc00x1000000x400000;bootm?bootcmd后,bootflash0x807fffc0,然后從0x807fffc0啟動(dòng)。?相反如果按照默認(rèn)bootcmd配置:nandread0x820000000x1000000x820000000x807fffc00x807fffc0啟動(dòng)。pidtgidtask_struct結(jié)構(gòu)體體包含兩個(gè)字段,pidtgidgroupid,若它沒組長,則它的tgid=pid。tgid的存在為了兼容posix標(biāo)準(zhǔn)。getpid()returntgidInnormalprocesses,theTGIDisequaltotheWiththreads,theTGIDisthesameforallthreadsinathreadgroup.Thisenablesthethreadstocallgetpid()andgetthesamePID。Infact,thePOSIX1003.1cstandardstatesthatallthreadsofamultithreadedapplicationmusthavethesamePID。 <-->100——menuconfig菜單下,選擇以下選項(xiàng)Generalsetup>Kernellogbuffer我們看到的MemTotal的大小已經(jīng)減去了內(nèi)核早期保留的內(nèi)存塊。totalram_pagesfree_all_bootmem();totalram_pages+=totalhigh_pages;MemTotal:Totalusableram(i.e.physicalramminusafewreservedbitsandthekernelbinarycode)MemFree:ThesumofBuffers:Relativelytemporarystorageforrawdiskblocksshouldn'tgettremendouslylarge(20MBorso)Cached:in-memorycacheforfilesreadfromthedisk(thepagecache).Doesn'tincludeSwapCached間固定位置處。該堆棧也是后來任務(wù)0使用的用戶態(tài)堆棧;CPU對(duì)內(nèi)存尋址訪問方式發(fā)生了變化,因此需要重新調(diào)整設(shè)置棧區(qū)域。CPU0級(jí)的內(nèi)核代碼4K,那么此時(shí)的觸發(fā)的中斷處理則將使用單獨(dú)的內(nèi)核棧。(比如動(dòng)態(tài)數(shù)組)task_struct和內(nèi)核棧共用同一塊內(nèi)存區(qū)域,所以內(nèi)核棧溢出task_structlinux下,這個(gè)結(jié)構(gòu)體是至關(guān)重要的,棧共用同一塊內(nèi)存區(qū)域的不再是task_struct,而是結(jié)構(gòu)體thread_info,不過由于thread_infotask_struct指針,所以內(nèi)核棧溢出的話同樣會(huì)損壞分配了??臻g,就有threadinfo的位置了。tialloc_pages(GFP_KERNEL,1);//order=18K的空間,tithreadinfo上面一句相對(duì)于分配了8K的棧的空間,同時(shí)threadinfo就占據(jù)在這個(gè)空間的開始部分。面放了個(gè)MAGIC數(shù)值,便于觀察是否棧溢出覆蓋掉threadinfo。tsk.stackti;//task_structstackthreadinfo的首地址(指針)。同時(shí)threadinfotask字段(structtask_struct*task)task_struct。也staticinlineunsignedlong*end_of_stack(structtask_struct{return(unsignedlong*)(task_thread_info(p)+移了一個(gè)structthreadinfo大小。在kernel/softirq.c中的asmlinkagevoid do
if(pending&{intprintkflg=staticintncount=unsignedlong*sp_magic=NULL;unsignedinttmp=current_thread_info();unsignedintvec_nr=h-softirq_vec;intprev_count=preempt_count();sp_magic=(unsignedlong*)((structthread_info*)tmp+1);if(current_thread_info()->task->pid!=0){registerunsignedlongspasm("sp");unsignedinttmp2=sp;staticintminstack=0xFFFFFFFF;if((*sp_magic!=0x57AC6E9D))ncount++;if((tmp2-tmp<minstack)||((*sp_magic!=0x57AC6E9D)&&(ncount<2))){minstack=tmp2-tmp;printkflg=1;printk("sp_magic=0x%x,0x%x,printk("DumpAt%sStackS%p(id=%d)--%p?= FUNCTION, LINE,current_thread_info(),current_thread_info()->task->pid,&tmp,sp);}}{{registerunsignedlongspasm("sp");unsignedinttmp2=sp;printkflg=printk("sp_magic=0x%x,0x%x,printk("DumpAt%sStackS%p(id=%d)--%p?= FUNCTION, LINE,current_thread_info(),current_thread_info()->task
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教A版安徽省合肥市普通高中聯(lián)盟2023-2024學(xué)年高二上學(xué)期1月期末聯(lián)考數(shù)學(xué)試題
- 武術(shù)說課稿課件
- 基層 工會(huì) 課件
- 介紹魯濱遜課件
- 高考地理一輪復(fù)習(xí)第六章自然環(huán)境的整體性和差異性第一節(jié)植被與土壤課件
- 西京學(xué)院《微機(jī)原理與接口技術(shù)》2021-2022學(xué)年期末試卷
- 學(xué)管師工作核心說課
- 西京學(xué)院《教師語言藝術(shù)》2022-2023學(xué)年第一學(xué)期期末試卷
- 西京學(xué)院《電機(jī)控制技術(shù)》2021-2022學(xué)年期末試卷
- 學(xué)會(huì)讀書 課件
- 蔬菜出口基地備案管理課件
- 子宮異常出血的護(hù)理
- 《耳穴療法治療失眠》課件
- 詢盤分析及回復(fù)
- 氯化工藝安全培訓(xùn)課件
- 指導(dǎo)巡察工作精細(xì)科學(xué)
- 企業(yè)法律知識(shí)培訓(xùn)消費(fèi)者權(quán)益保護(hù)實(shí)務(wù)
- 快樂讀書吧-讀后分享課:《十萬個(gè)為什么》教學(xué)案列
- 2024年 貴州茅臺(tái)酒股份有限公司招聘筆試參考題庫含答案解析
- 河上建壩糾紛可行性方案
- 小學(xué)低年級(jí)自主識(shí)字的教學(xué)策略
評(píng)論
0/150
提交評(píng)論