版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
?市海思半導(dǎo)體2017-2018。保留一切權(quán)利。商 注的或保證。 市龍崗區(qū)坂田電氣生產(chǎn)中心 客戶服務(wù): 未有特殊說明,Hi3556V100與Hi3559V100未有特殊說明,Hi3516AV200與Hi3519V101,Hi3516EV100與Hi3516CV300未有特殊說明,Hi3559CV100與Hi3559AV100嚴(yán)重。表示有中度或低度潛在,如果不能避免,可能導(dǎo)致人員輕微或中等。。修訂記錄累積了每次文檔更新的說明版本的文檔包含以前所有文檔版本的更新內(nèi)。文檔版本18(2017-12-8.91.12、3.23文檔版本17(2017-11-5.123.21文檔版本16(2017-08-3.22文檔版本15(2017-06-3.3文檔版本14(2017-04-Hi3536CV100文檔版本13(2017-03-3.21文檔版本12(2016-12-2.9、3.2、3.19、3.205.11文檔版本11(2016-08-4.14文檔版本10(2016-07-3.17文檔版本09(2016-05-文檔版本08(2016-02-3.15、5.10文檔版本07(2015-10-3.14文檔版本06(2015-07-Hi3521A/Hi3520DV300和Hi3531A文檔版本05(2015-06-2.5、4.14文檔版本04(2014-07-33.13小節(jié)文檔版本03(2014-02-55.9文檔版本02(2013-12-33.9。8章8.128.13文檔版本01(2012-09-1前 SDK環(huán)境、使用 為什么執(zhí)行server_install報(bào)錯(cuò) MMZ和MMB分別指什么,如何配置MMZ的區(qū)域和大小 1.2.1MMZ的原 為什么會(huì)有MMBLEAK之類的打印 為什么無法燒寫文件系統(tǒng)?或者flash出現(xiàn)非常多的bad 為什么無法啟動(dòng)文件系統(tǒng),提示Noinit 為什么無法啟動(dòng)文件系統(tǒng),提示不能打開 為什么tftp無法使用 制作cramfs16M的警告,同時(shí),制作的文件大小不對(duì)。 工具 如何讓gdb在調(diào)試過程中忽略信號(hào)量事件 如何使用DDR帶寬統(tǒng)計(jì)工具 為什么有時(shí)候udhcpc無法獲得IP地 當(dāng)前udhcpc如何支持DHCP+功 使用HiTools工具燒寫鏡像到eMMC注意事 外設(shè) 如何讓支持usbhost和device自切換 TOE怎樣使能 TOE模式下應(yīng)用程序使用socket接口時(shí)的注意事項(xiàng) 應(yīng)用程序使用socket接口時(shí),如何正確工作在非阻塞模式下 Atheros8035型號(hào)的phy使用注意事 網(wǎng)線插到到單板上,為什么還是會(huì)報(bào)Phyno Hi3518制作RMII版 Uboot下如何調(diào)試部分不兼容的U盤 使用netstat命令查看狀態(tài),IP地址顯示為 為什么USB3.0口過流保護(hù)去掉,會(huì)導(dǎo)致某些USB3.0U盤上電啟動(dòng)不識(shí)別 為什么USB2.0對(duì)接BCMWIFI模組時(shí),模組加載固件失敗 USB2.0如何關(guān)閉HostDevice自切換 為什么自動(dòng)升級(jí)時(shí)在uboot界面下尋找不到USB2.0的U盤導(dǎo)致無法升級(jí) 為什么在USB2.0、USB3.0DeviceUVC規(guī)格熱插拔會(huì)不識(shí)別 網(wǎng)口對(duì)接switch配置VLAN后網(wǎng)絡(luò)不 如何配置內(nèi)核選項(xiàng),把PCIe控制器驅(qū)動(dòng)編進(jìn)內(nèi)核 如何配置PCIe的控制時(shí)鐘 如何查看PCIe設(shè)備的BAR地址的分配信息 如何查看PCIe地址信息 PCIeMCC模塊的驅(qū)動(dòng)后為何不起作用 通過PCIe實(shí)現(xiàn)從啟動(dòng)失敗常見的情 Hi3531/Hi3532PCIeBAR地址,在reset時(shí)默認(rèn)會(huì)到哪個(gè)地址?在移動(dòng)窗口時(shí),有什么需要注意 PCIeMCC驅(qū)動(dòng)中,為了支持Hi3531和Hi3531DMA寫操作,所DMADMADMA讀操作替代。 為什么Hi3531/Hi3531級(jí)聯(lián),從片使用發(fā)布包PCIeMCC中直接編譯出來的ko會(huì)起不來 Hi3532作板卡的說 PCIeMCC支持主設(shè)備復(fù)位從設(shè)備嗎 使用某些PCIE轉(zhuǎn)SATA卡(如:marvel9215)連接sata盤讀寫數(shù)據(jù),導(dǎo)致出現(xiàn)vo低帶寬現(xiàn)象的解決方法(以Hi3536為例 為什么Hi3531NANDFlash我配置了硬件ECC,但卻不生 如何標(biāo)記flash上的壞塊 Hi3531的NANDFLASH控制器支持哪幾種糾錯(cuò)方 使用大容量NAND應(yīng)該注意的地 NANDEAGESIZE邏輯/硬件/的配置原 為什么在NAND上,u-boot保存環(huán)境變量后,系統(tǒng)無法啟 為什么燒寫NAND時(shí),不能合并成一個(gè)文件 為什么NAND上文件系統(tǒng)讀出來后,不能再寫到NAND上使用 怎樣把SPIflash由4線模式修改為2線模式 如何正確使用mtd-utils的nandwrite寫工 有些Flash器件ID不變工藝更新導(dǎo)致參數(shù)變化對(duì)兼容性的影 如何在linux3.18(及以上)內(nèi)核上支持SPINor雙片 文件系統(tǒng) NAND掛載cramfs文件系統(tǒng)注意事 快速啟動(dòng)優(yōu) pid和tgid區(qū) 如何設(shè)置dmesgbuf的大小 在/proc/meminfo顯示的MemTotal為什么不等于cmdline里的配置 在Linux系統(tǒng)中怎樣判斷棧是否溢出 客戶跑一個(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占有率 為什么的gilibc工具鏈中的backtrace工具無法打印或保存、定位程序的堆棧信息 插圖3-1USB3.0U盤啟動(dòng)識(shí)別流 圖3-2內(nèi)核態(tài)接口中申請(qǐng)鎖的操 圖3-3寫操作示例 圖3-4Demo板的PWREN的原理 圖3-5硬件設(shè)計(jì)電路示意 圖3-6添加配 圖3-7添加配 圖3-8配置SD卡定時(shí)檢測(cè)時(shí) 圖4-1menconfig界 圖5-1NandFlash塊結(jié)構(gòu) SDK環(huán)境、使用為什么執(zhí)行server_install報(bào)錯(cuò)youyoumustuse'root'toexecutethis./cross.install:25:Syntaxerror:"do"unexpected(expecting./cross.install:28:Syntaxerror:"do"unexpected(expecting./cross.install:30:Syntaxerror:"do"unexpected(expecting這是因?yàn)镾DK發(fā)布的都是基于bashlinux服務(wù)器可能安裝的是dash或者其他令行程序。解決方法:卸載dash或者把默認(rèn)的sh改成bash。一般刪除原來的sh軟,重新建立一個(gè)指向bash的軟即可:cd/binrm–fshln–s/bin/bashMMZMMBMMZ的區(qū)域和大MMZMMBMMZMMZ驅(qū)動(dòng)管理用戶創(chuàng)建的分配池,用戶程序分配內(nèi)存的時(shí)候可以指定要在哪個(gè)分配池MMZ“mmz=”media-mem<name>ddr<gfp>MMZ位DDR30。起始地址+linux內(nèi)核使用的內(nèi)存大小”開始。在Hi353x平臺(tái)上,內(nèi)存的起始地址0x80000000bootargs為'mem=96MMMZ0x80000000+96M=0x86000000。的大小加上linux內(nèi)核的內(nèi)存大小過物理內(nèi)存的實(shí)際大小。比如單板上的物 mmz=ddr,0,0x86000000,64M:vdec,0,0x8A000000,64MMMBLEAKMMBLEAK(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!這個(gè)打印并不代表內(nèi)存這是應(yīng)用程序在退出時(shí)還有資源沒有干凈,SDK檢測(cè)到這種情況后強(qiáng)制資源時(shí)給出的提示信息。請(qǐng)檢查應(yīng)用程序的去初始化動(dòng)作是否完fopen4G4G的文使用或者baidu搜索可以得到多種解決的方法,使用如下方法makefile編譯選項(xiàng)里加上如下選項(xiàng):-NFS如下的方法掛載mount-tnfs-onolock-otcpxxx.xxx.xxx.xxx:/xxx/sdk_rootrpcbind:serverlocalhostnotresponding,timedoutRPC:failedtocontactlocalrpcbindserver(errno5).rpcbind:serverlocalhostnotresponding,timedoutRPC:failedtocontactlocalrpcbindserver(errno5).rpcbind:serverlocalhostnotresponding,timedoutRPC:failedtocontactlocalrpcbindserver(errno5).之類的打印,一般是-onolocknfs經(jīng)常失去響應(yīng)(nfsservernotresponding,stilltrying之類的打印),一般是沒有加-otcp選項(xiàng)。flash出現(xiàn)非常多的badhisilicon#nandwrite.yaffs0x820000000x700000NANDwrite:device0offset0x700000,sizeAttempttowritenonpagealigneddata,length26380992409626380992byteswritten:這是由于制作yaffs文件系統(tǒng)的時(shí)候指定的pagesize和ecc參數(shù)與單板上的nandflash的nandflashpagesizeecc參數(shù)后重新pagesizeecc參數(shù)錯(cuò)誤并不一定導(dǎo)致燒寫錯(cuò)誤,可能也能燒“nandscrubNandFlashyaffs文件系統(tǒng)所在的區(qū)域清理一遍才能再次燒寫yaffs“nandscrub4000001000000”表示從0x400000開始清理64M。如果最后一個(gè)參數(shù)不傳,則表示從此地址開始清理至nandflash結(jié)束,比如“nandscrub400000”0x400000開始的所有flash空間。nandflashpagesize和eccHisiliconNandFlashControllerV300DeviceDriver,Version1.00NandID:0xAD0xDC0x100x950x540xAD0xDC0x10Nand(Hardware):Block:128KPage:2KEcc:1bitChip:512M包不支持這種類型的flash。Noinitata2:failedtoresumelink(SControl0)ata2:SATAlinkdown(SStatus0SControl0)yaffs:devis32505858nameis"mtdblock2"rwyaffs:passedflags""VFS:Mountedroot(yaffs2filesystem)ondevice31:2.Freeinginitmemory:100KKernelpanic-notsyncing:Noinitfound.Trypassinginit=optiontokernel.SeeLinux ation/init.txtforguidance.1:yaffspagesizeecctype錯(cuò)誤,這兩個(gè)參數(shù)如果nandflashyaffs文件系統(tǒng)。SDKmakebuild2:bootargsbootargs配置為:setenvbootargs=mem=96Mconsole=ttyAMA0,115200root=/dev/mtdblock2rootfstype=yaffs2mtdparts=hinand:4M(boot),60M(rootfs),-(others)'bootargs中的rootfstype配置錯(cuò)jffs2文件系統(tǒng),bootargs卻配置為yaffs2,也可能導(dǎo)致內(nèi)核無法識(shí)別這是因?yàn)橛脕碇谱魑募到y(tǒng)的rootbox里面沒有/dev/console文件,或者console文件的屬性不對(duì)。正常的console文件屬性如下:cdSDK ls./pub/rootbox/dev/-總計(jì)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:52tftp 掉網(wǎng) PC者?某些交換機(jī)會(huì)非交換機(jī)本身動(dòng)態(tài)分配的IP地址,在boot下直接用setenvipaddr 掉網(wǎng) 。PCtftp操作。。PCIPv6bootIPv6PCIPv6為什么在服務(wù)器上執(zhí)行SDK的某些編譯命令或者,。64位的操作系統(tǒng),而SDK32位32位運(yùn)行庫的方法。。apt-getinstalllibc6-apt-getinstallgcc-multilibg++-multiliblibc6-dev-i386libzip-devapt-getinstallia32-libslib32asound2libasound2-pluginsapt-getinstall-ylib32nss-mdnslib32gcc1lib32ncurses5lib32stdc++6lib32z1libc6libcanberra-gtk-moduledpkg-i--force-allgetlibs-<請(qǐng)先getlibs-all.deb到服務(wù)器再運(yùn)行cramfsroot@Athena:~$mkcramfs./tools/root.imgDirectorydata:37924bytesEverything:43936kilobytesSuperblock:76bytesCRC:warning:filesizestruncatedto16MB(minus1warning:gidstruncatedto8bits(thismaybeasecurity出現(xiàn)這個(gè)錯(cuò)誤原因是,本身的cramfs16M,如果需要制作單16M的文件系統(tǒng),請(qǐng)按照下面的流程檢查修改。請(qǐng)確保對(duì)cramfsMTDcramfs的源碼,解壓之后修改24256M28。修改內(nèi)核的cramfs文件系統(tǒng)修改內(nèi)核源碼 同樣的方式修改宏CRAMFS_SIZE_WIDTH\033P一些打印信息為增加顯示效果而加入了顏色(ANSI控制碼:“\033[0;32;31m打印了‘\033工具gdb的可執(zhí)行程序位于“~/osdrv/tools/board/gdb”下,請(qǐng)把對(duì)應(yīng)編譯器的gdb拷貝到單板的/usr/bin下,gdb,加上可執(zhí)行權(quán)限(用oda+xgdb命令,然后gdbnfsgdbgdb。gdbProgramreceivedsignalSIG32,Real-timeevent32.0x4052d940inrt_sigsuspend()from/lib/libc.so.0這種消息往往并不關(guān)注,可以gdb令行里面用命令handleSIG32passnoprintgdb忽略SIG32CPU100%步驟1.在單板上運(yùn) netd&,打開net服務(wù)步驟2.運(yùn)行應(yīng)用程序,在程序正常運(yùn)行的狀態(tài)下(不要按CTRL+Z把程序放到),步驟3. net終端上運(yùn)行”top–d1”,查看哪個(gè)pid的線程CPU占有率最高,記下這個(gè)值4.按’q’top,或者另外再起一個(gè)net5.在netgdbgdb命令行后,輸入“attachpid”,pid3中記錄下的pid的值。Attachbtfull,查看堆棧信息,一般情況下,堆棧的最頂端(最先打印出來的那幾個(gè)函數(shù))CPU占用最高的那個(gè)usleep(20000)或者使用其他方式在這個(gè)線程里面出讓CPU6.CPU26單板 2:value,可選address對(duì)應(yīng)的地址valuehimmaddress對(duì)2:length,可選address開始,以大端方式打印length字節(jié)256字節(jié)。2:length,可選address開始,以小端方式打印length字節(jié)256字節(jié)。2:value,必選3:length,必選address開始,把length字節(jié)長度的內(nèi)容value。address既可以是寄存器地址,也可以是內(nèi)存地址,所以以上工具也可以用于內(nèi)存DDR ddr控制器,00,11,20和控制10。- -wddr32bit16bit32bit- - 示例:hiddrsd0f400w32i1udhcpcsystemudhcpcsystem是通過fork實(shí)現(xiàn)的,而子進(jìn)程會(huì)父進(jìn)程的VM空間,當(dāng)父進(jìn)程占用較多VM空間,systemVM空間失敗導(dǎo)致的。解決方法:執(zhí)行:echo1> systemposix_spawn調(diào)用,簡單的示#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*spawnedArgsbin/ls","-l","/homeNULL};/*posix_spawn定子進(jìn)定子進(jìn) 令的全路徑(絕對(duì)路徑)char*spawnedEnv[]=printf("Parent =%ld\n",if((err=posix_spawn(&pid,spawnedArgs[0],NULL, spawnedArgs,spawnedEnv))!=0{fprintf(stderr,"posix_spawn()error=%d\n",err),exit(-}printf("Childprocessid=%ld\n",/*Waitforthespawnedprocesstoexitreturn}udhcpcIP地址udhcpc3IP請(qǐng)求,有時(shí)候服務(wù)器反映比較慢,需要增加請(qǐng)求增加請(qǐng)求次數(shù)令參數(shù)為:“udhcpc-t50”udhcpc如何支持DHCP+-V-D表示客戶端期待的賣主信息.例如:udhcpcVquestionDanswerfquestion服務(wù)器應(yīng)該回swer到單單板判斷收到的數(shù)據(jù)是否為answer,如果不是,配置失敗,如果是,配置成功;HiTools工具燒寫鏡像到eMMCHi3518EV200和Hi3519V100不支持eMMC非燒功能,使用HiTools工具往燒寫鏡像時(shí),需要同uboot外設(shè)USBsample如何讓支持usbhost和device自切換需要在 config菜單下,選擇以下選項(xiàng)Device [*]USB USBGadgetSupport USBPeripheralController [*]HisiliconUSB2.0DeviceControllerSUPPORT HisiliconUSB2.0Deviceautoswitchdeviceumac電腦概率不識(shí)別等問題。UDP接收或發(fā)送會(huì)丟包UDP數(shù)據(jù)時(shí)(單播或組播報(bào)文),同時(shí)進(jìn)行其它有延時(shí)的操作(如寫碼流數(shù)據(jù)到USB設(shè)備),應(yīng)該程序?qū)⒀舆t接收UDP數(shù)據(jù)包而socket108544Bytesocket接收緩存滿,無法接收新的UDP數(shù)據(jù)包,出現(xiàn)丟包現(xiàn)象。cat/proc/net/snmp|grepRcvbufErrorssocket接收緩存滿導(dǎo)致的丟包。>>>UDPCPU發(fā)送UDPMAC的MAC的發(fā)送緩沖隊(duì)列滿,引起了丟包。ifconfigecho20000>/proc/sys/net/core/wmem_maxecho20000>/proc/sys/net/core/wmem_defaultPHY地址在osdvr/kernel/linux- 在config菜單下,選擇以下選項(xiàng)DeviceDrivers[*]Networkdevicesupport>[*]Ethernet(1000Mbit)><M>STMicroelectronics10/100/1000EthernetdriverSTMMACMAC#0PHY phySTMMACMAC#1PHY phyu-boot代碼中,修改方法如下u-boot代碼中,“include\configs\godnet.h”文件#defineCONFIG_NET_STMMAC#defineCONFIG_TNK#ifdefCONFIG_NET_STMMAC#defineSTMMAC_GMACADDR #defineSTMMAC_DMAADDR #define #define #define phy#define phy#define #defineSTMMAC_RGMII#define#endif/*CONFIG_NET_STMMACGMAC網(wǎng)口不通網(wǎng)口不通通常會(huì)有如下可能IPIP現(xiàn)象:PC端單板延遲很大,時(shí)斷時(shí)通判斷辦法:PC端想單板發(fā)送包,同時(shí)拔掉單板對(duì)應(yīng)網(wǎng)口的網(wǎng)線,看是否依可以通。MACMAC地址重復(fù):現(xiàn)象:PC端單板不通;判斷辦法從PC端單板同時(shí)在PC端使用arp–a命令查看PC端的arp列表IPMACMAC地址是對(duì)應(yīng)的;GMACGMAC0:himd.l0x101c1014GMAC1:himd.lGMACTOEbypassTOE功能只需要如下操作即可:修改文件系統(tǒng)的/etc/init.d/S81toe啟動(dòng):insmodhitoe/stmmac.koecho8192>/proc/sys/vm/min_free_kbytesecho200>/proc/sys/vm/vfs_cache_pressureinsmod/hitoe/stmmac.kohitoe=1這幾個(gè)設(shè)置的詳細(xì)說明在S81toe啟動(dòng)中有詳細(xì)的描述這里不再贅述另外由于這TOEsocketTOE模式下,不管是阻塞模式還是非阻塞模式,協(xié)議處理是由硬件完成的,當(dāng)出現(xiàn)bufferEAGAINBypass模式下,如果是阻塞模buffer滿時(shí),不會(huì)返回EAGAIN,而阻塞繼續(xù)發(fā)送!另外經(jīng)過查詢得知send的返回值是這樣處理的:阻塞模式與非阻塞模式下,send返回值<0&&errnoEINTR||errnoEWOULDBLOCK||errnoEAGAIN)表示暫時(shí)發(fā)送失敗,需要重試,send返回值<=0,&&errno!=EINTR&&errno!=EWOULDBLOCK&&errno!=send時(shí),若返回值<0&&(errno==EINTR||errno==EWOULDBLOCK||errnoEAGAIN)應(yīng)該延時(shí)等待一段時(shí)間再重新嘗試發(fā)送,而不要直接調(diào)用close斷開連接,則不會(huì)出現(xiàn)此問題。socket接口時(shí),如何正確工作在非阻塞模式IO和IOIO的概念,socket基本概念
IO:socketIO操作(包括錯(cuò)誤)IO模式設(shè)置
socket1:fcntl設(shè)置;F_GETFLflags,F_SETFLflags|O_NONBLOCK;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); sockfd的操作都是阻塞的。方法2:recv、send系列的參數(shù)。(,發(fā)送時(shí),臨時(shí)將sockfd或filefd設(shè)置為非recv、sendflag臨時(shí)將sockfd設(shè)置為非阻塞模式,而無論原有是阻塞還是非阻塞。recv(sockfd,buff,buff_size,MSG_DONTWAIT); send(scokfd,buff,buff_size,MSG_DONTWAIT); Atheros8035phyPHYGTX_CLKdebug寄存器來實(shí)現(xiàn),而不是像通用的PHY一樣,在硬件鏈通過添加器件實(shí)現(xiàn)。ubootmw0x101c00140x5mw0x101c00100x1743mw0x101c00140x0100mw0x101c0010kernelpriv->mii->write(priv->mii,0x2,0x1d,0x5);priv->mii->write(priv->mii,0x2,0x1e,0x0100);PHYboot下百兆不通,讀寄存器發(fā)現(xiàn)被適應(yīng)成千兆;這是因?yàn)樵揚(yáng)HY寄存器0F的值應(yīng)該為0x2000,但實(shí)際值為0xA000,這樣驅(qū)動(dòng)的算得解決辦法請(qǐng)直接注掉ubootcommon/miiphyutil.c中紅色部分intmiiphy_speed(char*devname,unsignedcharaddr){u16bmcr,anlpar;u16btsr,val;#if
if(val&BMSR_ESTATEN){if(miiphy_is_1000base_x(devname,addr)){return_1000BASET;}PhynoNosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice:0:2Nosuchdevice: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:2PHYnotlink!PHYnotlinkdemo板上的phyphy進(jìn)行工作模式以及速度的協(xié)商,完成后還要一定時(shí)間的復(fù)位??赡軙?huì)導(dǎo)致插上網(wǎng)線后立即執(zhí)行網(wǎng)絡(luò)操作(、tftp或者其他操作)時(shí)出首先需要在內(nèi)核啟動(dòng)后開啟net,然后待出現(xiàn)掛死現(xiàn)象后,net單板,如果不能第二種方法,則是出現(xiàn)串口無響應(yīng)現(xiàn)象后,通過仿真器或net查看串口寄存器。以Hi3531為例,查看串口寄存器0x2008000011bit,以及0x20080004的第3bit1,就表示出現(xiàn)串口溢出錯(cuò)誤,導(dǎo)致串口無響應(yīng)。pl011.clinux-3.0.y版本。Hi3518制作RMII版第一步修改uboot表格修改crg0x200300cc中bit3為rmii接口模式,bit2為選擇PAD(為demo板選擇外部時(shí)鐘源)0xe,見表格紅色部分;0x200f005c,RMII_CLK模式0x3,見表格紅色部分;第二步uboot命令行配置rmii模setenvmdio_intf第三步制作rmii內(nèi)核鏡 config之后,按如下路徑進(jìn)入配置rmii模式UbootUUbootusb2.0OHCIusb3.0的XHCIubootusb2.0usb3.0端usb3.0U盤。ubootUU盤在上電后到被控制器識(shí)別所需時(shí)間不DTG3DataTraveler111,EAGETF30,Apacer,SSKSFD201通過調(diào)節(jié)參數(shù)CONFIG_USB_HUB_MIN_POWER_ON_DELAY為1000ms時(shí)也可以正常使用netstat命令查看狀態(tài),IP地址顯示為glibc的系統(tǒng)可能會(huì)出現(xiàn)此種情況。netstatlibcgetnameinfo接口獲取鏈ip地址,此接口的glibc與uclibc實(shí)現(xiàn)有差異,netstatglibcgetnameinfo時(shí)NULLnetstat后加-nIPbusyboxnetworking/netstat.c:host=numeric?:host=NULL;if(!numeric)host=xmalloc_sockaddr2host_noport(addr);if(!host)host=為什么USB3.0口過流保護(hù)去掉會(huì)導(dǎo)致某些USB3.0U盤上電啟動(dòng)不識(shí)別?USB3.0口去掉過流保護(hù),發(fā)現(xiàn)一款臺(tái)電科技的USB3.0的U盤插著上電后,不能USB3.0的時(shí)間太短,USB3.0的U盤還未3-1所示。上上電啟進(jìn)入U(xiǎn)SB進(jìn)入U(xiǎn)SB進(jìn)入U(xiǎn)SB進(jìn)入U(xiǎn)SB 進(jìn)入U(xiǎn)SB發(fā)命進(jìn)入U(xiǎn)SB發(fā)命發(fā)命去掉過流保護(hù)的USB3.0控制器,會(huì)先進(jìn)入U(xiǎn)SB2.0狀態(tài),再reset后進(jìn)入U(xiǎn)SB3.0狀態(tài)。這樣,控制器處于USB3.0狀態(tài)的時(shí)間T2遠(yuǎn)遠(yuǎn)小于有過流保護(hù)直接進(jìn)入U(xiǎn)SB3.0T1,導(dǎo)致uhost端發(fā)送命令失敗。解drivers/usb/core/hub.cHUB_ROOT_RESET_TIME100發(fā)命#define I2CI2Ci2c_master_send,i2c_master_recv和i2c_transfer,這幾個(gè)接口函數(shù)都會(huì)根據(jù)原子或非原子操作申請(qǐng)不同的鎖,如圖3-2調(diào)用I2C接口函數(shù)之前如果使用了原子鎖或在中斷中調(diào)用都會(huì)使當(dāng)前操作處于原子操作3-2ifelse分支。在原子操作中會(huì)通過i2c_trylock_adapter(adap)來嘗試請(qǐng)求鎖,如果出錯(cuò)返回-EAGAIN,則表示沒有得到鎖,而不是I2C通信出現(xiàn)問題。這種情況下讀寫操作是沒有執(zhí)行的,對(duì)于要寫的值沒有寫進(jìn)去;對(duì)于讀操作值沒有意義。因此需要進(jìn)一步判斷錯(cuò)誤返回值是否USB2.0BCMWIFI模組時(shí),模組加載固件失模組暫未發(fā)現(xiàn)firmware在規(guī)定的計(jì)數(shù)內(nèi)(可配)斷連不成功,則加載驅(qū)動(dòng)失敗。打印log如下:~#./bcmdl-nnvram_wubb-738gn.nvmbrcm43143.bin.trx-C10version:0.2Vendor0xa5cID0xbd1eclaiminginterface0Founddevice:vend=0xa5cID:Chip0xa887Rev0x2RamSize458752RemapBase0x60000000BoardType0BoardRev0Finalfw_path=brcm43143.bin.trxFinalnv_path=nvram_wubb-738gn.nvmFileLength:358596rdl.state0x4elapseddownloadtime0.214301Vendor0xa5cID0xbd1eVendor0x1d6bID0x2Vendor0x1d6bID0x1NodevicesfoundError:usbdev_t=0Vendor0xa5cID0xbd1eVendor0x1d6bID0x2Vendor0x1d6bID0x1NodevicesfoundError:usbdev_t=1Vendor0xa5cID0xbd1eVendor0x1d6bID0x2Vendor0x1d6bID0x1NodevicesfoundError:usbdev_t=2Vendor0xa5cID0xbd1eVendor0x1d6bID0x2Vendor0x1d6bID0x1NodevicesfoundError:usbdev_t=3Vendor0xa5cID0xbd1eVendor0x1d6bID0x2Vendor0x1d6bID0x1NodevicesfoundError:usbdev_find...Vendor0xa5cID0xbd1eVendor0x1d6bID0x2Vendor0x1d6bID0x1NodevicesfoundError:usbdev_t=5Vendor0xa5cID0xbd1eVendor0x1d6bID0x2Vendor0x1d6bID0x1NodevicesfoundError:usbdev_t=6Vendor0xa5cID0xbd1eVendor0x1d6bID0x2Vendor0x1d6bID0x1NodevicesfoundError:usbdev_t=7Vendor0xa5cID0xbd1eVendor0x1d6bID0x2Vendor0x1d6bID0x1NodevicesfoundError:usbdev_t=8Vendor0xa5cID0xbd1eVendor0x1d6bID0x2Vendor0x1d6bID0x1NodevicesfoundError:usbdev_t=9Vendor0xa5cID0xbd1eVendor0x1d6bID0x2Vendor0x1d6bID0x1NodevicesfoundError:usbdev_t=10RunoutofcntError:cannotfindbdcEOPBCM43143USB2WIFIfirmwareFirmware加載不成功時(shí),通過一次或多次動(dòng)態(tài)逐漸降低閾值(600mv、575mv、550mv、525mv,4檔),BCMWIFI自動(dòng)適配,確保在超時(shí)之前,F(xiàn)irmware加載成功。如果對(duì)功耗不是特別關(guān)慮不使用SVB方案,采用單板固定電壓供電。具體切換閾值方法和開關(guān)EOP//打開eop預(yù)加himm0x201200800x1900himm0x20120080//關(guān)閉eop預(yù)加himm0x201200800x1c00himm0x20120080//disconnectthreshold=650mVhimm0x201200800x1b0ahimm0x20120080//disconnectthreshold=625mVhimm0x201200800x190ahimm0x20120080//disconnectthreshold=612mVhimm0x201200800x1d0ahimm0x20120080//disconnectthreshold=600mVhimm0x201200800x110ahimm0x20120080//disconnectthreshold=587mVhimm0x201200800x150ahimm0x20120080//disconnectthreshold=575mVhimm0x201200800x1f0ahimm0x20120080//disconnectthreshold=562mVhimm0x201200800x050ahimm0x20120080//disconnectthreshold=550mVhimm0x201200800x170ahimm0x20120080//disconnectthreshold=537mVhimm0x201200800x0d0ahimm0x20120080//disconnectthreshold=himm0x201200800x070ahimm0x20120080//disconnectthreshold=500mVhimm0x201200800x0f0ahimm0x20120080由于此方案會(huì)增加wifiUSB2.0HostDevice關(guān)閉HostDevice自切換需要 DeviceDrivers[*]USBsupport<*>USBGadgetSupportUSBPeripheralController[*]HisiliconUSB2.0DeviceControllerSUPPORT<M>hisiliconhighspeeddevicecontrollerversion3.00adriver[]HisiliconUSB2.0DeviceautoswitchubootUSB2.0ubootVBUS5Vuboot代碼發(fā)現(xiàn)uboot的源碼中只打開了ohci的宏而硬件電poweren的電阻是默認(rèn)焊接在u3powerenvbus上沒電。如果想使用EHCIpowerenu2poweren的位置uboot源碼中關(guān)閉XHCI的宏。如果想使用XHCIpowerenu3poweren的位置uboot源碼中打開XHCI的宏。USB2.0、USB3.0DeviceUVC規(guī)格熱插拔會(huì)不Hi3519V10X/Hi3559V100USB3.0DeviceUVC規(guī)格時(shí),正常熱插拔會(huì)必現(xiàn)不識(shí)Hi3516CV300USB2.0DeviceUVC規(guī)格時(shí),快速熱插拔出現(xiàn)概率不識(shí)別問題,此兩種問題現(xiàn)象的解決方案需要設(shè)計(jì)/拔出狀態(tài)的檢測(cè)電路,具體請(qǐng)參考圖3-5 5V0_VBUS信號(hào)分壓,而后將分壓信號(hào)接到檢測(cè)到高電平時(shí),認(rèn)為設(shè)備;GPIO檢測(cè)到低電平時(shí),認(rèn)為設(shè)備拔出。Hi3519V10X/Hi3559V100/Hi3516CV300通過USB3.0、USB2.0設(shè)備時(shí),單板不能為USB3.0、USB2.05V0_VBUS上述GPIO必須為帶觸發(fā)器的GPIO管腳,具體可參考《《 、 》 來查找滿足要求的GPIO管腳,建議選擇GPIO1_0。修改方法請(qǐng)參考如下描述(以GPIO1_0描述為例。USB2.0添加配DeviceDrivers[*]USBsupport<*>USBGadgetSupport[*]HisiliconUSB2.0DeviceControllerSUPPORT<*>HisiliconUSB2.0DeviceSupportGPIOUSB3.0添加配DeviceDrivers[*]USBsupport<*>USBGadgetSupport[*]HisiliconUSB3.0DeviceControllerSUPPORT<*>HisiliconUSB3.0DeviceSupportGPIOUSB2.0代碼,以GPIO3_6為例 #defineGPIO_MODEioremap_nocache(0x12040020,0x100)#defineGPIO3_BASEioremap_nocache(0x12143100,0x400)#defineUSB_PWREN0x44#defineGPIO3_DIR#define #defineGPIO3_IE #define #define #define #defineGPIO3_6_IE #defineGPIO3_6_DATA #define/*GPIO的IE寄存器的bit6]如果是GPIO3_2#define/*GPIO的IC寄存器的bit6]如果是GPIO3_2#define ioremap_nocache(0x12040020,0x100)/*管腳復(fù)用#defineGPIO3_BASE ioremap_nocache(0x12143100,0x400)/*設(shè)置GPIO的偏移基地址,在GPIO實(shí)際址加了0x100*/#define 0x300*GPIO的實(shí)際使用地址,在代碼中以GPIO3_BASE+GPIO3_DIR方式使用USB3.0代 posite.c兩個(gè)文件GPIO相關(guān)寄存器的宏定義,修改方法相同,具體如下。#define #define #define io_address(0x12141410)#defineGPIO1_0_DATA io_address(0x12141004)#define io_address(0x1214141c)#defineGPIO1_0_IE(1<<0)/*GPIO的IE寄存器的bit[0]如果是GPIO3_2就要改成#defineGPIO1_0_IC(1<<0)/*GPIO的IC寄存器的bit0]如果是GPIO3_2#defineGPIO1_IEio_address(0x12141410)/*此為GPIO的IE寄存器的基址和偏移地#defineGPIO1_0_DATAio_address(0x12141004*此為GPIO的DATA寄存器的基址和偏移地址。如果是GPIO3_2就要改成0x12143010*/#defineGPIO1_ICio_address(0x1214141c)*此為GPIO的IC寄存器的基址和偏移地址。如果是GPIO3_2就要改成0x1214341c*/SDSD內(nèi)核需要定時(shí)檢測(cè)SD卡是否或拔出,默認(rèn)給的定時(shí)檢測(cè)時(shí)間為200ms DeviceDrivers<*>MMC/SD/SDIOcardsupport<*>himciv200eMMC/SDXC/SDIOdevicesupport內(nèi)核識(shí)別SDSD卡識(shí)別節(jié)點(diǎn),以及移除SD卡節(jié)點(diǎn)都需要一定的時(shí)間。在移除SD卡過程中再次會(huì)造成不能識(shí)別到此次的SD卡。在此情況下,請(qǐng)?jiān)侔纬鯯D卡,等待串口有如“mmcX:cardXXXXremoved”字樣的打?。ㄆ渲蠿代表實(shí)際運(yùn)行的數(shù)值)后,再次SD卡,即可識(shí)別到SD卡。網(wǎng)口對(duì)接switch配置VLAN后網(wǎng)絡(luò)不的網(wǎng)口,無論是百兆網(wǎng)卡ETH,還是千兆網(wǎng)卡GMAC,在對(duì)接某些switch芯片時(shí)(88E6071VLAN,可能會(huì)網(wǎng)絡(luò)不通。IEEE沒有明確規(guī)定VLAN6468字節(jié)。有的switch是按照最小幀長68字節(jié)實(shí)現(xiàn)的,而的網(wǎng)卡,是按照最小64字,節(jié)實(shí)現(xiàn)的,導(dǎo)致出現(xiàn)了兼容性問題網(wǎng)卡發(fā)送的數(shù)據(jù)包不滿足switch的最switch丟棄。,針對(duì)千兆GMAC網(wǎng)卡,修改網(wǎng)卡驅(qū)動(dòng)代碼,在驅(qū)動(dòng)發(fā)包函數(shù)的(ndo_start_xmit對(duì)ifif(skb->len<68)intpad_bytes=68-skb-WARN_ON(pad_bytes<=if(!skb_pad(skb,pad_bytes))skb_put(skb,pad_bytes);}針對(duì)百兆ETH網(wǎng)卡,修改網(wǎng)卡驅(qū)動(dòng)代碼,在驅(qū)動(dòng)發(fā)包函數(shù)的(ndo_start_xmit對(duì)應(yīng)ifif(skb->len<68)intpad_bytes=68-skb-WARN_ON(pad_bytes<=if(!skb_pad(skb,pad_bytes)){skb_put(skb,if(skb->ip_summed==CHECKSUM_PARTIAL)}}PCIe設(shè)備的枚舉。在EPPCIe控制器驅(qū)動(dòng)(EP模式的配置。RC模式下的具體配置:運(yùn)行“make 在config菜單下,選擇以下選項(xiàng):BusSupport [*]PCI [*]PCIExpresssupport BusSupport [*]PCI [*]Hisilico IExpresssupport EP模式下,請(qǐng)將PCIsupport關(guān)閉。Bus []PCI 注意:EP模式下一定不能將該選項(xiàng)選上。EPPCIe接口外接其PCIePCIe模塊的工作時(shí)鐘,主要有兩個(gè)來源:一個(gè)是來自,稱作時(shí)鐘;一個(gè)是來自外部,稱作外部時(shí)鐘。當(dāng)PCIe工作在RC模式下時(shí),通常使用時(shí)鐘;如果要使用外部時(shí)鐘,則時(shí)鐘信號(hào)必須外接的時(shí)鐘源。當(dāng)PCIe工作在EP模式下時(shí),PCIe系統(tǒng)控制器使能之前完成。himd.lPCIehimd.l0x200500B4運(yùn)行下面命令,讓PCIe使用時(shí)鐘himd.l0x200500B4另外,PCIeRChi3531為例,從設(shè)備的時(shí)鐘不由主設(shè)備提供,不建議主從時(shí)鐘不同源這種用法!PCIeBAR0x10、0x14、0x18BAR0、BAR1、BAR2的地址信息。其BAR08M,為可預(yù)取。BAR164K,BAR2大小1M,都是不可PCIe0himd.l如何查看PCIe地址信息的PCIe地址信息,保存在PCIe配置空間的IATU寄存器組中。IATU寄存器6組。每組寄存器有輸入和輸出兩個(gè)方向。寄存器組和方向的選擇,都通過Viewport寄存器控制PCIe0x900)hi3531為例,說明如何himm0x40100900himm0x40100900例如:查看已選擇的IATU寄存器組的地址信息himd.l0x40100900IATU0PCIeMCC模塊的驅(qū)動(dòng)后為何不起作用PCIeMCCMCCkoMCCko時(shí),需要依賴PCIePCIe(在config中,PCIe編譯選項(xiàng)應(yīng)該是選上的,同時(shí)內(nèi)核必須確保已經(jīng)編譯完成了。編譯從側(cè)PCIe-網(wǎng)卡、PCIe-sata使用以上設(shè)備時(shí),請(qǐng)注意內(nèi)核中對(duì)于的配置選項(xiàng)都應(yīng)該選上(以Hi3531為例DeviceDrivers[*]Networkdevicesupport>[*]Ethernet(1000Mbit)<*>SysKonnectYukon2SiliconImage3124/3132:DeviceDrivers>-*-SerialATAandParallelATAdrivers<*>SiliconImage3124/3132SATAsupportJMBDeviceDrivers*-SerialATAandParallelATAdrivers<*>AHCISATAsupportPCIe編譯從片內(nèi)核時(shí),請(qǐng)務(wù)必選上config中的如下選Generalsetup[*]InitialRAMfilesystemandRAMdisk(initramfs/initrd)4M以上的cramfs.configu-bootsetenvbootargs‘mem=64Mconsole=ttyAMA0,115200’setenvbootcmd‘bootm0x810000000x82000000’為什么運(yùn)SDK預(yù)覽的業(yè)務(wù)后,偶爾會(huì)打印“unknowHi-irqtriggered”按照最初的想法,本側(cè)每次端提交中斷的時(shí)候,先查看對(duì)端中斷狀態(tài),若中斷狀態(tài)考慮以下方法,對(duì)實(shí)時(shí)性要求較低的消息,通過定時(shí)器對(duì)多個(gè)消息進(jìn)行處理。每“unknowtriggeredHi3531/Hi3532PCIeBAR地址,在reset時(shí)默認(rèn)會(huì)到哪個(gè)地址?在移動(dòng)窗口時(shí),有什么需要注意的?在系統(tǒng)reset之后。Hi3531/Hi3532的地址沒有打開,也就是說,窗口不會(huì)到Hi3531/Hi3532PCIe控制器 有3個(gè)可用BAR地址大小分別為8M64K和1M。如果你用8M的窗口去 應(yīng)該是8M對(duì)齊的。比如你要 到從側(cè)的0x84200000,這個(gè)沒有問題;但是如果你想直接到0x84270000,就會(huì)有問題,因?yàn)樗皇?M對(duì)齊。如果你想操作0x84270000這個(gè)地址,你可以把窗口起始地址到0x84200000,然后通過偏移0x70000去這個(gè)地址另外,1M1M地址的對(duì)齊,64K64KPCIeMCCHi3531Hi3531級(jí)聯(lián),不再支持主片往從片DMADMA操作都由從DMA寫操作,可以通過從片往主片DMA讀操作替代。SPC070以前版本支持主從片之間雙向DMADMA寫DMA的數(shù)據(jù)傳輸,可能會(huì)導(dǎo)致一些不可預(yù)知的異常。因此,在SPC070的版本取消了對(duì)主片向從片DMA寫操作的支持,該操作可由從片DMA讀替代。從片DMA同時(shí)進(jìn)行讀寫操作,加上其它非DMA的數(shù)據(jù)傳輸,在實(shí)驗(yàn)從片DMA讀寫操作,在上通過兩個(gè)任務(wù)鏈表加以管理(原來只是一個(gè)任務(wù)鏈表PCIePCIe通道的利用率,與主片、從片同時(shí)發(fā)起DMA寫操作比較,基本一致。為什么Hi3531/Hi3531PCIekoHi3531Hi3532??梢栽趏sdrv/drv/pcie/hi35xx_dev/slave/config.h中看到配置如下://#define 1/*Hi3531#define 1/*Hi3532#define //#define 注:宏CONFIG_GODXXX指定了從片使用的是哪個(gè),默認(rèn)是Hi3532(CONFIG_GODCUBE)如果您使用的從片是Hi3531osdrv/drv/pcie/hi35xx_dev/slave/config.h#define //#define ////#definePCIE_SLAVE_CONNECTOR0 /*控制器0*/#definePCIE_SLAVE_CONNECTOR1 1/*控制器1*/CONFIG_GODCUBE關(guān)閉,并打開CONFIG_GODNET(Hi3531;由于Hi3531PCIe控制器,用戶可以使用其中一個(gè)來與主片連接(硬件決定。這需要根據(jù)實(shí)際情況配置使用從片的哪個(gè)控制器:PCIE_SLAVE_CONNECTOR0代表從片0PCE_SLE_CNNECOR1(,這里需要手動(dòng)配置是因?yàn)槿绻麖钠瑫r(shí)Hi3531無法預(yù)知它實(shí)際使用哪個(gè)控制器。也,Hi3532Windows7以下的Windows操作系統(tǒng),不支持對(duì)PCIe擴(kuò)展配置空間的。但Hi3532PCIe一些關(guān)鍵功能的實(shí)現(xiàn),比如DMA操作,窗口等,要求必須對(duì)PCIe擴(kuò)展配置空間進(jìn)行。為了兼容各個(gè)版本的Windows操作系統(tǒng),用原來直接對(duì)擴(kuò)展配置空間進(jìn)行的方法顯然不可行且Hi3532復(fù)位時(shí)PCIe窗口默認(rèn)是沒有打開的。如果不能進(jìn)行窗口操作,PCIe設(shè)備(Hi3532)是無法進(jìn)行地址和DMA操作的。PCHi3532Hi35323個(gè)Bar地址中的一個(gè)(BAR2),固定用于到Hi3532PCIe的配置空間(4K),而這個(gè)“事先”,需要由Hi3532的u-boot來完成。這樣,PC就可以通過訪問這個(gè)Bar地址,來實(shí)現(xiàn)對(duì)整個(gè)PCIe配置空間的。本方案要求在PC對(duì)Hi3532進(jìn)行任何操作之前,Hi3532自己先將Bar2到PCIe配置空間上面。為實(shí)現(xiàn)該操作,Hi3532(比如2MB)的flash存放啟動(dòng)的u-boot,在u-boot中將Bar2到本側(cè)的PCIePCHi3532PCBar2Hi3532PCIeHi3532spiflashu-u-bootDDR1.disableHi3532PCIe步驟2.設(shè)置Hi3532時(shí)鐘為時(shí)鐘步驟3.將Hi3532的Bar2配置到Hi3532的配置空間上4.Hi35325.enableHi3532PCIe6.(0x20030028)PC(0x11更0x1)DDR(DDRPC完成),u-boot正常啟動(dòng);否則PCPCIeMCC所有PCIe窗口的配置操作,都必須通過Hi3532的Bar2來完成配置。代?注意不要將Hi3532的Bar2到其他地方?Hi3532從spiflash?PCIeMCCPCIeMCC復(fù)位后完全保留復(fù)位之前的設(shè)備狀態(tài),包括設(shè)備功能狀態(tài)、地址等(DMA相;drv/pcie_mcc/koesbooter。該文drv/pcie_mcc/multi-boot/example目$./booter$./booter主設(shè)備復(fù)位從設(shè)備的功能是在SPC70盤讀寫數(shù)據(jù),導(dǎo)致出現(xiàn)vo低帶寬現(xiàn)象的解決方法(以Hi3536pciesataMax_Read_Request_Size256Bytepcie帶寬占用率。1.執(zhí)行命令:cparch/arm/configs/hi3536_full_defconfig步驟2.執(zhí)行命令:make 步驟3.在menconfig界面中,配置選項(xiàng)Bussupport>Hisilico IExpresssupport>PCIExpressconfigs>limitpciemaxreadrequestsize,如下圖4-1所示:4.步驟5.執(zhí)行命令:make PILE=arm-hisiv300-linux-uImage-j6.arch/arm/boot/uImageHi3531NANDFlashECC,但卻不Hi3531的NANDflashECCECC:““Nand(Auto)”flash默認(rèn)情況下,SDKNANDflashflashu-boot-2010.06標(biāo)記NAND壞塊令如下nandmarkbad該命令會(huì)標(biāo)記offset位置所在的NAND1M位置的塊為壞塊,nandmarkbadoffset最好為NAND的塊大小的整數(shù)倍。標(biāo)記壞塊后可以用如下命令查看nand#defineMEMSETBADBLOCK _IOW('M',12,kernel_loff_t)intfd;unsignedlonglongfd=open("/dev/mtd1",O_RDWR);offset=0x100000;if(ioctl(fd,MEMSETBADBLOCK,{ printf("Markbadblock0x%llXfailed!\n",}openmtdoffsetNAND,注意:u-boot-2010.06下的offset是相對(duì)與整個(gè)NANDoffset是open的對(duì)應(yīng)分區(qū)的偏移位置。Hi3531NANDFLASHHi3531的NANDFlashECC214支持824bits/1414824bits/1814ECC824bits/14Bytes糾錯(cuò)可以當(dāng)成4bit糾錯(cuò)使用,1bit、4Bytes、8Bytes表示每512字節(jié)(不一定就恰好是512字節(jié),可能會(huì)多幾個(gè)字節(jié))最多可以糾正1bit、4Bytes、8Bytes錯(cuò)誤。24bit1K表示每1K的數(shù)據(jù)中,最大可以糾正24bit錯(cuò)誤。2k4bytes只支持ubi/ubifs文件系統(tǒng)不支持是因?yàn)楫?dāng)前沒有這種NAND器件。比如:目前沒有2K-24bit1K的這種器件使用大容量NANDNAND4GNAND器件。4G32位無符號(hào)整型所能表示的最大極限,超過這個(gè)界限,328G。使NANDEAGESIZE邏輯/硬件/的配置原理NANDEAGESIZE配置從硬件到的順序如下邏輯上電時(shí),邏輯從硬件上下拉電阻把EAGESIZE讀到NAND寄存NFC_CON中如果是NAND啟動(dòng),邏輯按NFC_CON的配置值,去NAND上的內(nèi)容初始化DDR,初始化所有已設(shè)置寄存器,NFC_CON,NFC_CON寄存器啟動(dòng)后,驅(qū)動(dòng)讀NAND寄存器NFC_CON,得到ENAND上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í),5.8NAND上文件系統(tǒng)讀出來后,不能再寫到NANDNAND上文件系統(tǒng)讀出來后,NAND0xFF10xFF2次寫入其它–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),即使用戶沒有進(jìn)行寫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ì)22次寫操作(10xFF),發(fā)生錯(cuò)誤。Cramfs,squahsf等只讀文件系統(tǒng),不存以上問題內(nèi)核,ubootSPIflash42{{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,0如何正確使用mtd-utils的nandwrite寫工使用mtd-utils的nandwrite寫工具時(shí),如果寫的是u-boot.bin鏡像,且鏡像大小大于NandFlashu-boot.bin鏡像的數(shù)據(jù)按塊對(duì)齊填充。否則,u-boot.bin鏡像無法正常啟動(dòng)。由于個(gè)別NandFlash出廠時(shí)壞塊標(biāo)記位(BB,BadBlock)0的數(shù),例如0xFEFMC控制器利用ECC0xFF(0xFF在ECC算法上是合法可糾錯(cuò)的),故在每一個(gè)pageOOB信息的最后兩個(gè)byteblocknandwritepageEB位pageEB=0xFFblockubootNandFlash器件出廠時(shí)保證第一個(gè)塊為好塊,故邏輯不會(huì)去判斷第此外一旦uboot正常啟動(dòng)上不會(huì)再去判斷EB位這也是為什么使用nandwriteFlashID不變工藝更新導(dǎo)致參數(shù)變化對(duì)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《消化系統(tǒng)護(hù)理課件》課件
- 【2021高考復(fù)習(xí)參考】高三數(shù)學(xué)(理)配套黃金練習(xí):10-7
- 【先學(xué)后教新思路】2020高考物理一輪復(fù)習(xí)-教案8-電路-閉合電路歐姆定律
- 一年級(jí)反義詞100個(gè)
- 湖北省恩施州高中教育聯(lián)盟2024年秋季學(xué)期高一年級(jí)期末考試物理試題(含答案)
- 【高效提能】2021高考?xì)v史(人教版)一輪作業(yè):第七單元-資本主義世界市場(chǎng)的形成和發(fā)展
- 【名師一號(hào)】2021年岳麓歷史必修3-雙基限時(shí)練21
- 五年級(jí)數(shù)學(xué)(小數(shù)乘除法)計(jì)算題專項(xiàng)練習(xí)及答案匯編
- 四年級(jí)數(shù)學(xué)(三位數(shù)乘兩位數(shù))計(jì)算題專項(xiàng)練習(xí)及答案
- 二年級(jí)數(shù)學(xué)計(jì)算題專項(xiàng)練習(xí)集錦
- 浙江省2023年1月學(xué)業(yè)考試物理物理試題(解析版)
- 一年級(jí)數(shù)學(xué)加減法口算題每日一練(25套打印版)
- 黑河黃藏寺水利樞紐工程環(huán)境影響評(píng)價(jià)報(bào)告書-黑河流域管理局
- 2024-2025學(xué)年五年級(jí)科學(xué)上冊(cè)第二單元《地球表面的變化》測(cè)試卷(教科版)
- 幸福創(chuàng)業(yè)智慧樹知到期末考試答案2024年
- GB/T 13912-2020金屬覆蓋層鋼鐵制件熱浸鍍鋅層技術(shù)要求及試驗(yàn)方法
- 縣領(lǐng)導(dǎo)在新錄用公務(wù)員培訓(xùn)班開班典禮上的講話
- 2022年工會(huì)會(huì)計(jì)制度——會(huì)計(jì)科目和會(huì)計(jì)報(bào)表
- 搞笑小品劇本《家長駕到》臺(tái)詞完整版 金牌喜劇班李海銀高海寶盛偉
- (完整版)高級(jí)管理人員年薪制管理辦法
- 教學(xué)管理系統(tǒng)業(yè)務(wù)流程圖
評(píng)論
0/150
提交評(píng)論