Microsoft's default NAND driver uses sparepage after each page of NAND to store the ing between physical pages and logical pages.

Source: Internet
Author: User
Tags builtin
Wince5.0 + 2440 startup

I will partition according to the eboot of mini2240 first .. The first 25 blocks are nboot. eboot. TOC, followed by the MBR partition. I will split the large binfs partition based on the NK size, followed by the FAT partition. The partition is correct from the printed information, but I did not read the partition table information to confirm. Below I will provide my debug printing information
Windows CE firmware init
Info: initializing system interrupts...
Info: initializing system clock (s )...
Info: initializing driver globals area...
Sdmmc config set rgpgcon: 82a982
Oeminit done...
Booting Windows CE Version 5.00 for (ARM)
& Ptoc = 8c20a25c, ptoc = 8dedd5ac, ptoc-> ulramfree = 8e029000, memforpt = 00000000
Old or invalid version stamp in kernel structures-starting clean!
Flushing ing: Primary pages: 7892, secondary pages: 0, filesystem pages = 1973
Booting kernel with clean memory Configuration:
Memory sections:
[0]: Start: 8e02a000, extension: 00002000, Length: 01ed4000
SP = ffffc7cc
Arminit done.
Windows CE kernelinit
Updated eptr-> e32_vsize to = 000c8000
Scheduling the first thread.
0x8feff024: kernelinit2: pcurthread = 8feff024 hcurthread = 0feff266 hcurproc = 0feff002, kernelinit = 8c24921c
0x8feff024: detecting VFP... 0x8feff024: VFP not found!
0x8feff024: First = 01cc0000, last = 02000000, shareddllbase = 02510000
0x8fee5000: certmod. dll not found, using old OEM Trust Model
0x8fee5000: filesystem starting-starting with clean File System
0x8fee5000: FS: initializing ROM/RAM File System
0x8fee5000: SC _createapihandle: pvdata = NULL
0x8 fee5000: FS: Registering file system ROM, index 2, flags 0x00000031
0x8 fee5000: FS: Mount complete (ROM, index 2, flags 0x00000031)
0x8fee5000: fsvol: Opening existing volume
0x8fee5000: fsvol: volume heap already initialized
0x8fee5000: fsreg: mounted Rom portion of boot Registry
0x8fee5000: fsvol: creating clean Virtual Volume
0x8fee5000: fsvol: initializing volume heap
0x8fee5000: fsreg: mounted Ram portion of boot Registry
0x8fee5000: FS: Creating Signal Event System/devmgrapisetready
0x8fee5000: FS: Creating Signal Event System/powermanagerready
0x8fee5000: FS: Creating Signal Event System/gweapisetready
0x8fee5000: fsreg: unable to read value "Start devmgr" under HKEY_LOCAL_MACHINE \ init \ bootvars
0x8fee5000: filesys: Starting Storage Manager.
0x8 fee5000: FS: Registering File System storemgr, index 3, flags 0x00000001
0x8fee5000: nandflash fmd_init
0x8fee5000: nandflash fmd_init done
0x8fee5000: flashdrv. dll: buildupmappinginfo ()-Enter.
0x8fee5000: The 0th block is bad, Data = 0x0
0x8fee5000: the 1th block is bad, Data = 0x0
0x8fee5000: The 2th block is bad, Data = 0x0
0x8fee5000: The 3th block is bad, Data = 0x0
0x8fee5000: The 4th block is bad, Data = 0x0
0x8fee5000: The 5th block is bad, Data = 0x0
0x8fee5000: The 6th block is bad, Data = 0x0
0x8fee5000: the 7th block is bad, Data = 0x0
0x8fee5000: The 8th block is bad, Data = 0x0
0x8fee5000: The 9th block is bad, Data = 0x0
0x8fee5000: The 10th block is bad, Data = 0x0
0x8fee5000: the 11th block is bad, Data = 0x0
0x8fee5000: The 12th block is bad, Data = 0x0
0x8fee5000: the 13th block is bad, Data = 0x0
0x8fee5000: The 14th block is bad, Data = 0x0
0x8fee5000: The 15th block is bad, Data = 0x0
0x8fee5000: the 16th block is bad, Data = 0x0
0x8fee5000: The 17th block is bad, Data = 0x0
0x8fee5000: The 18th block is bad, Data = 0x0
0x8fee5000: the 19th block is bad, Data = 0x0
0x8fee5000: the 20th block is bad, Data = 0x0
0x8fee5000: The 21th block is bad, Data = 0x0
0x8fee5000: The 22th block is bad, Data = 0x0
0x8fee5000: The 23th block is bad, Data = 0x0
0x8fee5000: The 24th block is bad, Data = 0x0
0x8fee5000: flashdrv. dll: l2p_getphysicalsectoraddr ()-secondary table doesn't exist for logical sector 0x0 !!!
0x8fee5000: flashdrv. dll: l2p_getphysicalsectoraddr ()-Secondary table doesn't exist for logical sector 0x340 !!!
0x8fee5000: flashdrv. dll: l2p_getphysicalsectoraddr ()-secondary table doesn't exist for logical sector 0x400 !!!
0x8fee5000: flashdrv. dll: l2p_getphysicalsectoraddr ()-Secondary table doesn't exist for logical sector 0x600 !!!
0x8fee5000: flashdrv. dll: l2p_getphysicalsectoraddr ()-Secondary table doesn't exist for logical sector 0x800 !!!
0x8fee5000: flashdrv. dll: l2p_getphysicalsectoraddr ()-secondary table doesn't exist for logical sector 0x5400 !!!
................
Flashdrv. dll: l2p_getphysicalsectoraddr ()-Secondary table doesn't exist for logical sector 0x8600 !!!
0x8fee5000: flashdrv. dll: l2p_getphysicalsectoraddr ()-Secondary table doesn't exist for logical sector 0x8800 !!!
......................
0x8fee5000: flashdrv. dll: l2p_getphysicalsectoraddr ()-Secondary table doesn't exist for logical sector 0xea00 !!!
0x8fee5000: FMD: fmd_oemiocontrol = 0x71c24
0x8fee5000: loading partition driver mspart. dll hmodule = 8fe83288
0x8fee5000: Driver mspart. dll loaded
0x8fee5000: flashdrv. dll: readfrommedia ()-unable to determine physical sector address for logical sector 0x0000ea40
0x8fee5000: opened the store hstore = 000eef60
0x8fee5000: numsec = 129952 bytespersec = 512 freesec = 0 biggestcreatable = 0
0x8fee5000: partition part00 numsectors = 59136
0x8fee5000: mspart! Pd_openpartition: dwstoreid = 000eef60, partname = part00
0x8fee5000: partition part01 numsectors = 69984
0x8fee5000: mspart! Pd_openpartition: dwstoreid = 000eef60, partname = part01
0x8fee5000: fsd_mountdisk: mounting volumes for hdsk = 00134160
0x8fee5000: flashdrv. dll: readfrommedia ()-unable to determine physical sector address for logical sector 0x0000ea40
0x8fee5000: fatfs! Openvolume: Access time updates disabled
0x8fee5000: fatfs! Openvolume: event logging enabled
0x8fee5000: fatfs! Openvolume: automatic scanning disabled
0x8fee5000: fatfs! Openvolume: Write verify disabled
0x8fee5000: fatfs! Openvolume: extra fat on format disabled
0x8fee5000: fatfs! Openvolume: Force write through Enabled
0x8fee5000: fatfs! Openvolume: codePage = 1
0x8fee5000: fatfs! Openvolume: Number of path cache entries = 50
0x8fee5000: fatfs! Initvolume: Sector 0 byte 0 suspicious (0x0)
0x8fee5000: fatfs! Initvolume: Invalid BPB, volume deemed invalid
0x8fee5000: fatfs! Initvolume: fat version: 12
0x8fee5000: fatfs! Initvolume: cluster size (sectors): 0
0x8fee5000: fatfs! Initvolume: tfat enabled: false
0x8fee5000: fatfs! Unmountdisk: unmounting all volumes on disk 00
0x8fee5000: fatfs! Fatdetach complete (0 sectors written in 0 requests)
0x8fee5000: initsharedheap: 44200000 10000 C
0x8fee5000: initsharedheap: Return 44200060
0x8fee5000: filesys: restarting Storage Manager.
0x8fee5000: filesys: starting device and waiting for boot file system.
0x8fe722e8: initsharedheap: 44200000 0 C
0x8fe722e8: initsharedheap: Return 44200060
0x8fe722e8: *** dll_process_attach-current process: 0x42, ID: 0x8fe7254e ***
0x8fe722e8: + initdevicefilesystems
0x8 fe722e8: FS: Registering File System $ device, index 4, flags 0x00000001
0x8 fe722e8: FS: Registering File System $ bus, index 5, flags 0x00000001
0x8fe722e8:-initdevicefilesystems: status is 1
0x8fe722e8: ceddk! Calibratestallcounter: Enter
0x8fe722e8: ceddk! Calibratestallcounter: cocould not find stall counter
0x8fe722e8: ceddk! Begincalibration: min (501) max (556)
0x8fe722e8: ceddk! Begincalibration: elapsed is 548
0x8fe722e8: ceddk! Begincalibration: delay is 19
0x8fee5000: FS: Waiting for device to signal bootphase1 completion
0x8fe722e8: device! Devloadinit
0x8fe722e8: device! Initdevices: Root Key is Drivers \ builtin.
0x8fe722e8: device! Regreadactivationvalues regqueryvalueex (Drivers \ builtin \ prefix) returned 2
0x8fe722e8: device! Regreadactivationvalues regqueryvalueex (Drivers \ builtin \ busprefix) returned 2
0x8fee5000: filesys: starting device and waiting for boot file system.
From the print information, it seems that these words gave me information.
0x8fee5000: flashdrv. dll: l2p_getphysicalsectoraddr ()-Secondary table doesn't exist for logical sector
1. What does secondary table mean?
0x8fee5000: flashdrv. dll: readfrommedia ()-unable to determine physical sector address for logical sector 0x0000ea40
2. readfrommedia is a function in FAL. It cannot be seen in ce5. This statement cannot convert logic sector into a real physical address. Is the logical start address in my Partition Table incorrect ??? However, the partition printing information is correct... After loading the partition driver, you can clearly read the information in the two parts. Still correct.
3. I guess 0x8fee5000: fatfs from this sentence! Initvolume: cluster size (sectors): 0 must be the reason why binfs is not mounted.

WallePublished

1. What does secondary table mean?
0x8fee5000: flashdrv. dll: readfrommedia ()-unable to determine physical sector address for logical sector 0x0000ea40
[B] [walle] You use Microsoft's default NAND driver. It uses sparepage after each page of NAND to store the ing between physical pages and logical pages. If your eboot (or other bootloader) does not write this part of the ing data of spare page during image burning, when wince needs to read some binfs data at startup and calls the NAND driver to obtain the physical page corresponding to the logical sector 0, it will not get the ing table and fail. [/B]
2. readfrommedia is a function in FAL. It cannot be seen in ce5. This statement cannot convert logic sector into a real physical address. Is the logical start address in my Partition Table incorrect ??? However, the partition printing information is correct... After loading the partition driver, you can clearly read the information in the two parts. Still correct.
[B] [walle] FAL does not have opensource in ce5. If you are interested, you can check the private and source of ce6! [/B]
3. I guess 0x8fee5000: fatfs from this sentence! Initvolume: cluster size (sectors): 0 must be the reason why binfs is not mounted.
[B] [walle] data such as cluster size is stored in the DBR sector. According to the above analysis, your NAND driver cannot know where the data in the logical sector is stored, so it is impossible to get the data. [/B]

UnswayPublished

[Walle] You use Microsoft's default NAND driver. It uses sparepage after each page of NAND to store the ing between physical pages and logical pages. If your eboot (or other bootloader) does not write this part of the ing data of spare page during image burning, when wince needs to read some binfs data at startup and calls the NAND driver to obtain the physical page corresponding to the logical sector 0, it will not get the ing table and fail.
Whether the ing between physical pages and logical pages in sparepage is achieved by marking Bad blocks. If not, I want to explain how ing WORKS, because there are some tag bits and ECC in sparepage. If yes. You mean that I marked the block incorrectly in bootloader ....
Thank you very much for your answers and hope you can continue to pay attention to them ..

Pipi0714Published

Look

WallePublished on

[Quote] [walle] You use Microsoft's default NAND driver. It uses sparepage after each page of NAND to store the ing between physical pages and logical pages. If your eboot (or other bootloader) does not write this part of the Sping data of spare page during image burning, WinCE starts...
[Size = 2] [color = #999999] unsway published at [/color] [url = http://www.armce.cn/bbs/redirect.php? Goto = findpost & pid = 5073 & ptid = 481] [img] average
When writing an image to nand, eboot can write the logical page to the spare area of the page while writing data to the main area.
Tell you a method. You can change the NAND driver so that it intentionally returns the sequential logical page number (if there is no bad block, the physical page is usually linearly matched with the logical page, only the start number is different. For example, if the physical page 0x0 corresponds to the logical page 0x2000, the corresponding 0x1000 = 0 x)

UnswayPosted on

Isn't spare area just a few bytes? You mean to read the byte of spare area directly .. And then analyze... I have been busy with cameras recently and have not paid attention to this matter for a long time.

WallePublished

Save a DWORD logical page number in the spare area of each physical page.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.