i.MX解决方案知识库

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

i.MX Solutions Knowledge Base

标签

讨论

排序依据:
                                                  (Images are scaled to actual size) Accelerate time-to-market and optimize cost by using proven solutions from toradex​ We offer off-the-shelf System on Modules/ Computer on Modules and Customized SBCs based on i.MX 6Q, i.MX 6D, i.MX 6DL and i.MX 6S processors at competitive prices. These modules exposes majority of the extensive interfaces supported by i.MX 6 processors. Complemented with these robust and small form-factor modules, we also offer extensive online technical resources, free premium support, and open-source carrier board designs. BSPs and libraries for Windows Embedded Compact and Linux are available at no cost. For more information on our i.MX 6 solutions, please check https://www.toradex.com/products/freescale-i.mx6
查看全文
Hi, RAW is still often used in automotive applications. If you are doing bare metal code and if you use OS (QNX, GreenHills integrity), it is often a pain to boot from NAND. On SABRE AI, you have a NAND socket, this document will present you the basics command to reverse engineer the NAND boot setup of a SABRE AI. KOBS-NG What you can do first is understand kobs-ng application, and try to understand it...sources are available on freescale's GIT: http://sw-git.freescale.net/cgi-bin/gitweb.cgi?p=linux-kobs.git;a=summary Anyway, the sequencing is not obvious... Modified MFGtool (see enclosed archive) What you can do also it to program a NAND flash on a SABRE board for instance and read back the NAND flash. First configure your SABRE AI board: S2: 0001 S1: 0001100000  (I use 8 BBT and FCB to be more secure) BOOT_MODE: 0010 (if your NAND flash is not already programmed, otherwise 0100) Copy my mfgtool (Works only with i.MX6 Solo part), and unzip it. Plug  a micro USB cable and a RS232 cable, configure your hyperterminal as usual. Launch mfgtool and press start: Wait the end of programmation: Note: I did modify ucl2.xml file to have 8 BBT and FCB (see S1 configuration above, and "--search_exponent=3" --> 2^3=8 instead of default 2^2=4 ) and I did add the "-v" option in ucl2.xml file to have the verbose mode (thus memory addresses of FCB, BBT and more are displayed) ---> you have to go on the extreme right of the lines below... depending of the witdth of your screen): <!--burn the uboot to NAND: -->    <CMD   state = "Updater"   type = "push"   body = "send"   file = "files/u-boot-mx6solo-sabreauto-nand.bin" > Sending U-Boot </CMD>   <CMD   state = "Updater"   type = "push"   body = "$ kobs-ng init -v --search_exponent=3 --chip_0_device_path=/dev/mtd0 $FILE" > Flashing Bootloader </CMD> ‍‍‍‍‍‍‍‍‍‍‍ Set BOOT_MODE switches: 0010 and press reset. After u-boot startup press a key in the terminal to stop execution. Now you can explore your NAND! have a look in the enclosed "mx6Solo_RAW_NAND_SABRE_AI_programming_verbose.txt" file, you have all the adressses of BBT, FCB, etc...: Firmware: image #0 @ 0x400000 size 0x2a000 - available 0x600000 Firmware: image #1 @ 0xa00000 size 0x2a000 - available 0x600000 -------------- Start to write the [ FCB ] ----- mtd: erasing @0:0x0-0x80000 mtd: Writing FCB0 [ @0:0x0 ] (10e0) * mtd: Writing FCB1 [ @0:0x40000 ] (10e0) * mtd: erasing @0:0x80000-0x100000 mtd: Writing FCB2 [ @0:0x80000 ] (10e0) * mtd: Writing FCB3 [ @0:0xc0000 ] (10e0) * mtd: erasing @0:0x100000-0x180000 mtd: Writing FCB4 [ @0:0x100000 ] (10e0) * mtd: Writing FCB5 [ @0:0x140000 ] (10e0) * mtd: erasing @0:0x180000-0x200000 mtd: Writing FCB6 [ @0:0x180000 ] (10e0) * mtd: Writing FCB7 [ @0:0x1c0000 ] (10e0) * mtd_commit_bcb(FCB): status 0   -------------- Start to write the [ DBBT ] ----- mtd: erasing @0:0x200000-0x280000 mtd: Writing DBBT0 [ @0:0x200000 ] (1000) * mtd: Writing DBBT1 [ @0:0x240000 ] (1000) * mtd: erasing @0:0x280000-0x300000 mtd: Writing DBBT2 [ @0:0x280000 ] (1000) * mtd: Writing DBBT3 [ @0:0x2c0000 ] (1000) * mtd: erasing @0:0x300000-0x380000 mtd: Writing DBBT4 [ @0:0x300000 ] (1000) * mtd: Writing DBBT5 [ @0:0x340000 ] (1000) * mtd: erasing @0:0x380000-0x400000 mtd: Writing DBBT6 [ @0:0x380000 ] (1000) * mtd: Writing DBBT7 [ @0:0x3c0000 ] (1000) * mtd_commit_bcb(DBBT): status 0‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ to read the NAND, I read it in internal OCRAM ( address is 0x918000 for i.MX6DL and Solo) and then I display it): You can read the DCD of one of the boot image (first one is at address 0x400000 as you can see in the enclosed text file): Firmware: image #0 @ 0x400000 size 0x2a000 - available 0x600000 Firmware: image #1 @ 0xa00000 size 0x2a000 - available 0x600000‍‍‍‍‍‍ So, let's read the begenning of the image... at offset 0x400, you'll see the barker code of the DCD: 0x402000D1: MX6SOLO SABREAUTO U-Boot > nand read 0x918000 0x400000 0x800 NAND read: device 0 offset 0x400000, size 0x800 2048 bytes read: OK MX6SOLO SABREAUTO U-Boot > md 0x918000 0x500 00918000: ea000186 00000000 00000000 00000000 ................ 00918010: 00000000 00000000 00000000 00000000 ................ 00918020: 00000000 00000000 00000000 00000000 ................ 00918030: 00000000 00000000 00000000 00000000 ................ 00918040: 00000000 00000000 00000000 00000000 ................ 00918050: 00000000 00000000 00000000 00000000 ................ 00918060: 00000000 00000000 00000000 00000000 ................ 00918070: 00000000 00000000 00000000 00000000 ................ 00918080: 00000000 00000000 00000000 00000000 ................ 00918090: 00000000 00000000 00000000 00000000 ................ 009180a0: 00000000 00000000 00000000 00000000 ................ 009180b0: 00000000 00000000 00000000 00000000 ................ 009180c0: 00000000 00000000 00000000 00000000 ................ 009180d0: 00000000 00000000 00000000 00000000 ................ 009180e0: 00000000 00000000 00000000 00000000 ................ 009180f0: 00000000 00000000 00000000 00000000 ................ 00918100: 00000000 00000000 00000000 00000000 ................ 00918110: 00000000 00000000 00000000 00000000 ................ 00918120: 00000000 00000000 00000000 00000000 ................ 00918130: 00000000 00000000 00000000 00000000 ................ 00918140: 00000000 00000000 00000000 00000000 ................ 00918150: 00000000 00000000 00000000 00000000 ................ 00918160: 00000000 00000000 00000000 00000000 ................ 00918170: 00000000 00000000 00000000 00000000 ................ 00918180: 00000000 00000000 00000000 00000000 ................ 00918190: 00000000 00000000 00000000 00000000 ................ 009181a0: 00000000 00000000 00000000 00000000 ................ 009181b0: 00000000 00000000 00000000 00000000 ................ 009181c0: 00000000 00000000 00000000 00000000 ................ 009181d0: 00000000 00000000 00000000 00000000 ................ 009181e0: 00000000 00000000 00000000 00000000 ................ 009181f0: 00000000 00000000 00000000 00000000 ................ 00918200: 00000000 00000000 00000000 00000000 ................ 00918210: 00000000 00000000 00000000 00000000 ................ 00918220: 00000000 00000000 00000000 00000000 ................ 00918230: 00000000 00000000 00000000 00000000 ................ 00918240: 00000000 00000000 00000000 00000000 ................ 00918250: 00000000 00000000 00000000 00000000 ................ 00918260: 00000000 00000000 00000000 00000000 ................ 00918270: 00000000 00000000 00000000 00000000 ................ 00918280: 00000000 00000000 00000000 00000000 ................ 00918290: 00000000 00000000 00000000 00000000 ................ 009182a0: 00000000 00000000 00000000 00000000 ................ 009182b0: 00000000 00000000 00000000 00000000 ................ 009182c0: 00000000 00000000 00000000 00000000 ................ 009182d0: 00000000 00000000 00000000 00000000 ................ 009182e0: 00000000 00000000 00000000 00000000 ................ 009182f0: 00000000 00000000 00000000 00000000 ................ 00918300: 00000000 00000000 00000000 00000000 ................ 00918310: 00000000 00000000 00000000 00000000 ................ 00918320: 00000000 00000000 00000000 00000000 ................ 00918330: 00000000 00000000 00000000 00000000 ................ 00918340: 00000000 00000000 00000000 00000000 ................ 00918350: 00000000 00000000 00000000 00000000 ................ 00918360: 00000000 00000000 00000000 00000000 ................ 00918370: 00000000 00000000 00000000 00000000 ................ 00918380: 00000000 00000000 00000000 00000000 ................ 00918390: 00000000 00000000 00000000 00000000 ................ 009183a0: 00000000 00000000 00000000 00000000 ................ 009183b0: 00000000 00000000 00000000 00000000 ................ 009183c0: 00000000 00000000 00000000 00000000 ................ 009183d0: 00000000 00000000 00000000 00000000 ................ 009183e0: 00000000 00000000 00000000 00000000 ................ 009183f0: 00000000 00000000 00000000 00000000 ................ 00918400: 402000d1 27800620 00000000 2780042c .. @ ..'....,..' 00918410: 27800420 27800400 00000000 00000000 ..'...'........ 00918420: 27800000 0002a0a4 00000000 40e001d2 ...'...........@ 00918430: 04dc01cc 74070e02 00000c00 54070e02 .......t.......T 00918440: 00000000 ac040e02 30000000 b0040e02 ...........0.... 00918450: 30000000 64040e02 30000000 90040e02 ...0...d...0.... 00918460: 30000000 4c070e02 30000000 94040e02 ...0...L...0.... 00918470: 30000000 a0040e02 00000000 b4040e02 ...0............ 00918480: 30000000 b8040e02 30000000 6c070e02 ...0.......0...l 00918490: 30000000 50070e02 00000200 bc040e02 ...0...P........ 009184a0: 28000000 c0040e02 28000000 c4040e02 ...(.......(.... 009184b0: 28000000 c8040e02 28000000 60070e02 ...(.......(...` 009184c0: 00000200 64070e02 28000000 70070e02 .......d...(...p 009184d0: 28000000 78070e02 28000000 7c070e02 ...(...x...(...| 009184e0: 28000000 70040e02 28000000 74040e02 ...(...p...(...t 009184f0: 28000000 78040e02 28000000 7c040e02 ...(...x...(...| 00918500: 28000000 00081b02 030039a1 0c081b02 ...(.....9...... 00918510: 1f001f00 10081b02 1f001f00 3c081b02 ...............< 00918520: 16021c42 40081b02 7a017b01 48081b02 B......@.{.z...H 00918530: 4c4e4a4b 50081b02 34333f3f 1c081b02 KJNL...P??34.... 00918540: 33333333 20081b02 33333333 24081b02 3333... 3333...$ 00918550: 33333333 28081b02 33333333 b8081b02 3333...(3333.... 00918560: 00080000 04001b02 25000200 08001b02 ...........%.... 00918570: 30303300 0c001b02 13536b67 10001b02 .300....gkS..... 00918580: 638b6eb6 14001b02 db00ff01 18001b02 .n.c............ 00918590: 40170000 1c001b02 00800000 2c001b02 ...@..........., 009185a0: d2260000 30001b02 23106b00 40001b02 ..&....0.k.#...@ 009185b0: 27000000 00001b02 00001984 1c001b02 ...'............ 009185c0: 32800004 1c001b02 33800000 1c001b02 ...2.......3.... [ETC....] MX6SOLO SABREAUTO U-Boot >‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ Let's check the persistent bit (i.MX6S or DL) PERSIST_SECONDARY_BOOT, reflecting from which image you boot: MX6SOLO SABREAUTO U-Boot > md 0x20D8044 1 020d8044: 40000000    ...@ MX6SOLO SABREAUTO U-Boot >‍‍‍‍‍‍‍‍ Bit 30 is 0, meaning you boot from first image Let's erase one boot image to see it it still boot (you have 2 boot images) MX6SOLO SABREAUTO U-Boot > nand erase 0x400000 0x512 NAND erase: device 0 offset 0x400000, size 0x512 Warning: Erase size 0x00000512 smaller than one erase block 0x00080000 Erasing 0x00080000 instead Erasing at 0x400000 -- 100% complete. OK MX6SOLO SABREAUTO U-Boot >‍‍‍‍‍‍‍‍‍‍‍‍‍‍ Presss the reset button of your board to see if the board still start. If you read the PERSIST_SECONDARY_BOOT persistent bit, you'll see you boot from the second image as bit 30 is active: MX6SOLO SABREAUTO U-Boot > md 0x20D8044 1 020d8044: 40000000    ...@ MX6SOLO SABREAUTO U-Boot >‍‍‍‍‍‍‍‍ If you erase the second image (address 0xa00000, board will not boot as you only have 2 images). What you can do thenis read your FCB (flash configuration) with the following commands in u-boot prompt (sometimes the first read fails! so try again): WARNING: this was for a 2009 u-boot, in newer version (2016 for instance) you have to do a "nand dump" otherwise it will return an error (FAIL -74), see [Uboot] Nand read from offset xxx failed -74  MX6SOLO SABREAUTO U-Boot > nand read 0x918000 0x40000 0x800 NAND read: device 0 offset 0x40000, size 0x800 NAND read from offset 40000 failed -74 0 bytes read: ERROR MX6SOLO SABREAUTO U-Boot > nand read 0x918000 0x40000 0x800 NAND read: device 0 offset 0x40000, size 0x800 2048 bytes read: OK MX6SOLO SABREAUTO U-Boot > md 0x918000 0x100 00918000: fc000000 4346ffff 00002042 3c500100 ......FCB ....P< 00918010: 00000619 10000000 10e00000 00800000 ................ 00918020: 00000000 00000000 00000000 00080000 ................ 00918030: 02000000 02000000 00080000 000a0000 ................ 00918040: 00070000 00000000 00000000 00000000 ................ 00918050: 00000000 00000000 00000000 00000000 ................ 00918060: 00000000 00000000 04000000 0a000000 ................ 00918070: 002a0000 002a0000 02000000 0f400000 ..*...*.......@. 00918080: 00000000 10000000 00000000 00000000 ................ 00918090: 00000000 00000000 00000000 00000000 ................ 009180a0: 00000000 00000000 00000000 00000000 ................ 009180b0: 00000000 00000000 00000000 00000000 ................ 009180c0: 00000000 00000000 00000000 00000000 ................ 009180d0: 00000000 00000000 00000000 00000000 ................ 009180e0: 00000000 00000000 00000000 00000000 ................ 009180f0: 00000000 00000000 00000000 00000000 ................ 00918100: 00000000 00000000 00000000 00000000 ................ 00918110: 00000000 00000000 00000000 00000000 ................ 00918120: 00000000 00000000 00000000 00000000 ................ 00918130: 00000000 00000000 00000000 00000000 ................ 00918140: 00000000 00000000 00000000 00000000 ................ 00918150: 00000000 00000000 00000000 00000000 ................ 00918160: 00000000 00000000 00000000 00000000 ................ 00918170: 00000000 00000000 00000000 00000000 ................ 00918180: 00000000 00000000 00000000 00000000 ................ 00918190: 00000000 00000000 00000000 00000000 ................ 009181a0: 00000000 00000000 00000000 00000000 ................ 009181b0: 00000000 00000000 00000000 00000000 ................ 009181c0: 00000000 00000000 00000000 00000000 ................ 009181d0: 00000000 00000000 00000000 00000000 ................ 009181e0: 00000000 00000000 00000000 00000000 ................ 009181f0: 00000000 00000000 00000000 00000000 ................ 00918200: 00001a1c 0000000e 00000000 00000000 ................ 00918210: 00000000 00000019 00001600 00001600 ................ 00918220: 00000019 0000000f 00000019 00000000 ................ 00918230: 00000000 00000000 00000000 00000000 ................ 00918240: 00000000 00000000 00000000 00000000 ................ 00918250: 00001300 00000f00 00000008 00000008 ................ 00918260: 00001600 00000015 00000000 00001a00 ................ 00918270: 00000000 00000000 00000000 00000000 ................ 00918280: 00000000 00000000 00000000 00000000 ................ 00918290: 00000000 00000000 00000000 00000000 ................ 009182a0: 00000000 00000000 00000000 00000000 ................ 009182b0: 00000000 00000000 00000000 00000000 ................ 009182c0: 00000000 00000000 00000000 00000000 ................ 009182d0: 00000000 00000000 00000000 00000000 ................ 009182e0: 00000000 00000000 00000000 00000000 ................ 009182f0: 00000000 00000000 00000000 00000000 ................ 00918300: 00000000 00000000 00000000 00000000 ................ 00918310: 00000000 00000000 00000000 00000000 ................ 00918320: 00000000 00000000 00000000 00000000 ................ 00918330: 00000000 00000000 00000000 00000000 ................ 00918340: 00000000 00000000 00000000 00000000 ................ 00918350: 00000000 00000000 00000000 00000000 ................ 00918360: 00000000 00000000 00000000 00000000 ................ 00918370: 00000000 00000000 00000000 00000000 ................ 00918380: 00000000 00000000 00000000 00000000 ................ 00918390: 00000000 00000000 00000000 00000000 ................ 009183a0: 00000000 00000000 00000000 00000000 ................ 009183b0: 00000000 00000000 00000000 00000000 ................ 009183c0: 00000000 00000000 00000000 00000000 ................ 009183d0: 00000000 00000000 00000000 00000000 ................ 009183e0: 00000000 00000000 00000000 00000000 ................ 009183f0: 00000000 00000000 00000000 00000000 ................ MX6SOLO SABREAUTO U-Boot >‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ If you read the addresses 0x000000, 0x40000, 0x80000, 0xc0000, 0x100000, 0x140000 or 0x180000 or 0x1c0000 you'll have a copy of the FCB in OCRAM (internal RAM) and then read the OCRAM. You can now try that the replication is working. Thus try to erase FCBs (in my case, with Micron MT29F16G08ABABAWP the minimum I can erase is 2 FCBs due to sector size of 0x80000, check it on your side), for u-boot after 2009 use "nand dump", see https://community.nxp.com/message/885233  : MX6SOLO SABREAUTO U-Boot > nand erase 0x0 0x512 NAND erase: device 0 offset 0x0, size 0x512 Warning: Erase size 0x00000512 smaller than one erase block 0x00080000 Erasing 0x00080000 instead Erasing at 0x0 -- 100% complete. OK MX6SOLO SABREAUTO U-Boot > nand erase 0x80000 0x512 NAND erase: device 0 offset 0x80000, size 0x512 Warning: Erase size 0x00000512 smaller than one erase block 0x00080000 Erasing 0x00080000 instead Erasing at 0x80000 -- 100% complete. OK MX6SOLO SABREAUTO U-Boot > nand erase 0x100000 0x512 NAND erase: device 0 offset 0x100000, size 0x512 Warning: Erase size 0x00000512 smaller than one erase block 0x00080000 Erasing 0x00080000 instead Erasing at 0x100000 -- 100% complete. OK MX6SOLO SABREAUTO U-Boot >‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ You have erase 6 FCB. If you press reset, you normallystill can boot the device (checkswitch S1 is configured like that: 0001100000). You can also read the bad block table. In enclosed "mx6Solo_RAW_NAND_SABRE_AI_programming_verbose.txt" you have addresses of the DBBT: 0x200000, 0x240000, 0x280000, 0x2c0000, 0x300000, 0x340000, 0x380000 and 0x3c0000: -------------- Start to write the [ DBBT ] ----- mtd: erasing @0:0x200000-0x280000 mtd: Writing DBBT0 [ @0:0x200000 ] (1000) * mtd: Writing DBBT1 [ @0:0x240000 ] (1000) * mtd: erasing @0:0x280000-0x300000 mtd: Writing DBBT2 [ @0:0x280000 ] (1000) * mtd: Writing DBBT3 [ @0:0x2c0000 ] (1000) * mtd: erasing mtd: Writing DBBT4 [ @0:0x300000 ] (1000) * mtd: Writing DBBT5 [ @0:0x340000 ] (1000) * mtd: erasing @0:0x380000-0x400000 mtd: Writing DBBT6 [ @0:0x380000 ] (1000) * mtd: Writing DBBT7 [ @0:0x3c0000 ] (1000) * mtd_commit_bcb(DBBT): status 0‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ now read a DBBT in u-boot (as already mentionned, sometimes nand read failed, so try again!): MX6SOLO SABREAUTO U-Boot > nand read 0x918000 0x280000 0x800 NAND read: device 0 offset 0x280000, size 0x800 2048 bytes read: OK MX6SOLO SABREAUTO U-Boot > md 0x918000 0x80 00918000: 00000000 54424244 01000000 00000000 ....DBBT........ 00918010: 00000000 00000000 00000000 00000000 ................ 00918020: 00000000 00000000 00000000 00000000 ................ 00918030: 00000000 00000000 00000000 00000000 ................ 00918040: 00000000 00000000 00000000 00000000 ................ 00918050: 00000000 00000000 00000000 00000000 ................ 00918060: 00000000 00000000 00000000 00000000 ................ 00918070: 00000000 00000000 00000000 00000000 ................ 00918080: 00000000 00000000 00000000 00000000 ................ 00918090: 00000000 00000000 00000000 00000000 ................ 009180a0: 00000000 00000000 00000000 00000000 ................ 009180b0: 00000000 00000000 00000000 00000000 ................ 009180c0: 00000000 00000000 00000000 00000000 ................ 009180d0: 00000000 00000000 00000000 00000000 ................ 009180e0: 00000000 00000000 00000000 00000000 ................ 009180f0: 00000000 00000000 00000000 00000000 ................ 00918100: 00000000 00000000 00000000 00000000 ................ 00918110: 00000000 00000000 00000000 00000000 ................ 00918120: 00000000 00000000 00000000 00000000 ................ 00918130: 00000000 00000000 00000000 00000000 ................ 00918140: 00000000 00000000 00000000 00000000 ................ 00918150: 00000000 00000000 00000000 00000000 ................ 00918160: 00000000 00000000 00000000 00000000 ................ 00918170: 00000000 00000000 00000000 00000000 ................ 00918180: 00000000 00000000 00000000 00000000 ................ 00918190: 00000000 00000000 00000000 00000000 ................ 009181a0: 00000000 00000000 00000000 00000000 ................ 009181b0: 00000000 00000000 00000000 00000000 ................ 009181c0: 00000000 00000000 00000000 00000000 ................ 009181d0: 00000000 00000000 00000000 00000000 ................ 009181e0: 00000000 00000000 00000000 00000000 ................ 009181f0: 00000000 00000000 00000000 00000000 ................ MX6SOLO SABREAUTO U-Boot >‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ Here I have no bad block (it is a SLC RAW NAND flash..). To be sure I have effectively erased 6 FCB, I will erase the 2 last one... thus I will not boot as all FCB tables will be erased(remove the usb cable otherwise mfgtool will restart): MX6SOLO SABREAUTO U-Boot > nand erase 0x180000 0x512 NAND erase: device 0 offset 0x180000, size 0x512 Warning: Erase size 0x00000512 smaller than one erase block 0x00080000 Erasing 0x00080000 instead Erasing at 0x180000 -- 100% complete. OK MX6SOLO SABREAUTO U-Boot >‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ Reset the board... and it will not start as you have erased all the 8 FCB tables... you have to reprogram your board if you want to start again.
查看全文
This the document for SUSPEND and WAKE-UP in IMX8QM-MEK platform Wake up done by following, M4  debug UART A53 debug UART Power Key Source: imx-p9.0.0_2.1.1-auto-ga CONFIGURATION          Disable the default wake-up - RTC Timer (Patch - Disable_auto_wakeup.diff) SUSPEND      1. Command  Line,             # echo mem > /sys/power/state      2. Dumpsys Command                  # dumpsys activity service com.android.car inject-vhal-event 0x11410a00 4,2 WAKE-UP     1. BUTTON          By pressing the power-key SW3 (0.5s)      2. DEBUG UART          Enable debug UART wake-up          # cat ./sys/devices/platform/5a060000.serial/tty/ttyLP0/power/wakeup          disabled          # echo enabled  > ./sys/devices/platform/5a060000.serial/tty/ttyLP0/power/wakeup          TO WAKEUP                   Press the ENTER Key 2 times 3. M4 UART WAKEUP                        Apply the RPMSG patch (L4.14.98.diff)                                        # cat./sys/devices/platform/5a070000.serial/tty/ttyLP1/power/wakeup          disabled          # echo enabled > ./sys/devices/platform/5a070000.serial/tty/ttyLP1/power/wakeup Type some input in M4 Cosole               
查看全文
Introduction i.MX6SoloX and i.MX7D SoC contain embedded Cortex-M4 core. In a common use-case, this core runs a firmware loaded by u-boot bootloader. If you however want to debug your application for the Cortex-M4 core, you may need to reload the firmware in the secondary core without restarting Linux running on the Cortex-A core. For this reason, a tool was created: imx-m4fwloader. The project is released as open source under GPL-2.0 licence here: GitHub - NXPmicro/imx-m4fwloader: Tool for loading firmware to M4 core on i.MX6SX and 7D  I hope this tool will help to bring up faster your application for i.MX6SoloX and i.MX7D SoC! How to use this Either use the pre-built version Or use the environment provided to you by Yocto: For example: source /opt/poky/1.8/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi $CC m4fwloader.c -o m4fwloader You get m4fwloader binary... Then you need to build your M4 application and link it to some address. (e.g 0x00910000, try: https://github.com/EmbeddedRPC/erpc-imx-demos/tree/master/MCU/example_rpmsg) Load it using m4fwloader: ./m4fwloader myapp.bin 0x00910000 Optionally use --verbose parameter to see what is written to each registers Warning: Use this tool for debugging only, since it accesses directly the registers from the user space and requires therefore root priviledges! You have been warned... 🙂 Optionally, you can trigger an interrupt using message unit (MU) to the M4 core to get RPMsg started - this is normally done by Linux Kernel during startup: ./m4fwloader kick 0 Whole usage is here: m4fwloader [filename.bin] [0xLOADADDR] [--verbose] # loads new firmware or: m4fwloader stop # holds the auxiliary core in reset or: m4fwloader start # releases the auxiliary core from reset or: m4fwloader kick [n] # triggers interrupt on RPMsg virtqueue n
查看全文
Use our i.mx6D evb board. takingwang@gmail.com  IMX6D dual display different video.
查看全文
The MYD-JX8MX development board is a versatile platform based on the NXP i.MX 8M Quad processors which feature 1.3GHz quad ARM Cortex-A53 cores and a real-time ARM Cortex-M4 co-processor and provide industry-leading audio, voice, and video processing for applications that scale from consumer home audio to industrial building automation and mobile computers. It is built around the MYC-JX8MX CPU Module and has brought out rich peripherals through connectors and headers such as 4 x USB 3.0 Host ports and 1 x USB 3.0 Host/Device port, Gigabit Ethernet, TF card slot, USB based Mini PCIe interface for 4G LTE Module, WiFi/BT, Audio In/Out, HDMI, 2 x MIPI-CSI, MIPI-DSI, 2 x LVDS display interfaces, NVMe PCIe M.2 2280 SSD Interface, etc. It is provided with both Linux and Android software package and delivered with necessary cable accessories for customer to easily start development as soon as getting it out-of-box. A MIPI Camera Module MY-CAM003 is provided as an option for the board. More information can be found from MYIR's website: MYD-JX8MX Development Board | i.MX 8M ARM Board-Welcome to MYIR                       
查看全文
NXP i.MX8M Mini SoC, quad-core ARM Cortex-A53, 1.8GHz Integrated 2D/3D GPU and 1080p VPU Up to 4GB LPDDR4 and 64GB eMMC Certified dual-band WiFi 802.11ac, BT 4.2 GbE, PCIe, 2x USB, 4x UART, 60x GPIO Tiny size and weight - 28 x 38 x 5 mm, 7 gram Yocto Linux and Android - BSPs and ready-to-run images Industrial temperature range: -40° to 85° C 10-year availability CompuLab's UCM-iMX8M-Mini is a miniature System-on-Module board designed for integration into industrial embedded applications. Measuring just 28 x 38 mm, UCM-iMX8M-Mini is an ideal solution for space constrained and portable systems. UCM-iMX8M-Mini Detailed Spec UCM-iMX8M-Mini Development Kit UCM-iMX8M-Mini Online Pricing
查看全文
iWave Systems Technologies Pvt. Ltd., a leading innovative Embedded Product Engineering Services company headquartered in Bangalore, launches “i.MX 6 SBC - Industry's latest Pico ITX Board around Freescale Semiconductor’s i.MX 6 Solo/Dual Lite processor which is iWave’s 4th i.MX 6 based design” on 26-02-2013 in Embedded World 2013 Nuremberg Germany. Measuring just 10cm x 7.2cm, iWave’s i.MX6 SBC is a highly integrated platform for increased performance in “Intelligent Industrial Control Systems, Industrial Human Machine Interface, Ultra Portable Devices, Home Energy Management Systems and Portable Medical Devices”. The i.MX 6 Solo/Dual Lite with ARM Cortex™-A9 single/dual cores running up to 1.0 GHz includes 2D and 3D graphics processors, 1080p video processing, and integrated power management. Each processor provides 32/64-bit DDR3/LVDDR3/LPDDR2-800 memory interface and a number of other interfaces for connecting peripherals, such as WLAN, Bluetooth™, GPS, hard drive, displays, and camera sensors. iWave’s new i.MX6 Solo/ Dual Lite based Pico ITX SBC integrates all standard interfaces into a single board with ultra-compact platform that can be utilized across multiple embedded PCs, systems and industrial designs. The i.MX6 SBC from iWave with its features like DDR3 RAM, Dual Display, Dual camera inputs, Gigabit Ethernet, Micro SD & SD slots, Dual USB 2.0 hosts, USB 2.0 OTG, Audio Out/In & serial interfaces, enables developers/users to quickly develop/implement their application needs around i.MX6 processor and optimize the “development effort and time to market” of their products. The i.MX6 SBC from iWave helps to reduce system cost, supports ultra-small form factor, wide operating temperature range from -20 0 C to +85 0 C and is backed with a minimum five years longevity support. Highlights of iWave’s i.MX6 SBC: ARM Cortex A9@ 1GHz Dual Lite/Solo core 10cm x 7.2cm Pico-ITX form factor Single Board Computer HD 1080p encode and decode,3D video playback in high definition Includes HDMI v1.4, MIPI and LVDS display ports, MIPI camera, Gigabit Ethernet, multiple USB 2.0 and PCI Express Comprehensive security features include cryptographic accelerators, high-assurance boot and tamper protection Technical &quick customization support with 5+ years, Long term support About iWave Systems: iWave has been an innovator in the development of “Highly integrated, high-performance, low-power and low-cost i.MX6/i.MX50/i.MX53/i.MX51/i.MX27 SOMs”. iWave helps its customers reduce their time-to-market and development effort with its products ranging from System-On-Module to complete systems. The i.MX6 Pico ITX SBC is brought out by iWave in a record time of just 5 weeks. Furthermore, iWave’s i.MX6/i.MX50/i.MX53/i.MX51/i.MX27 SOMs have been engineered to meet the industry demanding requirements like various Embedded Computing Applications in Industrial, Medical & Automotive verticals. iWave provides full product design engineering and manufacturing services around the i.MX SOMs to help customers quickly develop innovative products and solutions. For more details, please visit: http://www.iwavesystems.com/product/development-platform/i-mx6-pico-itx-sbc/i-mx6-pico-itx-sbc.html email: mktg@iwavesystems.com
查看全文
ConnectCore® i.MX53 / Wi-i.MX53 Freescale i.MX53 Cortex A8 system-on-module The network-enabled ConnectCore for i.MX53 is a highly integrated and future-proof system-on-module (SoM) solution based on the new Freescale i.MX53 application processor with a high performance 1 GHz ARM Cortex-A8 core, wired and wireless connectivity, powerful 1080p/720p video encoding/decoding capabilities, dual-CAN bus interface and a complete set of peripherals.   The ConnectCore for i.MX53 family builds on the successful ConnectCore for i.MX51 modules by providing a form factor compatible option with significantly improved processing, memory, video and connectivity capabilities. It is a scalable and energy-efficient module family that is ideal for medical devices, security/surveillance equipment, industrial applications, kiosk systems and digital signage integration. Modules in the ConnectCore i.MX family feature the design, development and administrative advantages offered by the iDigi® Device Cloud™. This secure, highly scalable platform seamlessly ties enterprise applications and remote devices together.   iDigi Manager Pro empowers IT, network operations and customer support organizations to conquer the challenges of managing equipment in their device networks. Network managers can remotely configure, upgrade, monitor and troubleshoot remote devices, and create applications that improve productivity, speed and efficiency.   Integrated secure wireless 802.11a/b/g/n Wi-Fi WLAN Powerful 2D/3D graphics, 1080p video Support for Embedded Linux, Microsoft Windows Compact 7 and Android Industrial operating temperature system-on-module (SoM) Secure, anywhere management using iDigi Manager Pro™   http://www.digi.com/products/wireless-wired-embedded-solutions/solutions-on-module/connectcore/connectcore-wi-mx53#overview
查看全文
http://www.youtube.com/watch?v=iVDKr18E6l4&feature=player_embedded   Published on Aug 4, 2012 by mgrunditz Qt 5 qt3d demo Category: Science & Technology License: Standard YouTube License
查看全文
Measuring only 70mm by 55mm, the MYS-6ULX designed by MYIR is a high-performance low-cost Single Board Computer (SBC) specially designed for industry and Internet of Things (IoT) applications. It is based on NXP i.MX 6UL/6ULL processor family which features the most efficient ARM Cortex-A7 core and can operate at speeds up to 528 MHz. The MYS-6ULX Single Board Computer supports Yocto and Debian OS. Here we take Debian OS as an example.   The programming procedure:      Prepare an SD card. Open the image file of OS “mys6ull-debian8.rootfs.sdcard” with Win32Disk Imager, then program it into the SD card.      Power on the MYS-6ULX board. Insert the SD card to the slot, set the dip switch to 0101. Connect the serial port cable and USB power cable to the board, then power on the board.      Login in the system. The user name is root and the pass word is 123456. View the system information with command cat/etc/issue, the system version is Debian8 as shown below, which means the OS has been programmed into the SD card successfully. The develop environment I work on PC is Ubuntu VMS, ARMGCC compiler is needed to be installed in the Ubuntu VMS. We can check if the compiler is available with instruction arm-linux-gnueabihf-gcc–v. Ubuntu16 comes with a 5.4 version compiler as below: We need to install a compiler if the system doesn’t come with one. The toolkit MYIR provided contains that compiler. Open the folder 03-Tools\Toolchain, there is a package named “gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf.tar.xz”. Copy this package into a folder of VMS and use commands below to extract it. xz -dgcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf.tar.xz tar -xfgcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf.tar We would have a file named gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf after unpacking, then use instruction below to set the compiler: export PATH= $PATH:$DEV_ROOT/\gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf/bin exportCROSS_COMPILE=arm-linux-gnueabihfexport ARCH=arm View the compiler version again, the information printed on the screen should be: We can see the compiler version is 4.9.3. Then all the settings of develop environment has been completed.
查看全文
Dynamic voltage and frequency scaling (DVFS) is a power management technique that allows dynamically reducing power consumption of a CPU by dynamically scaling down supply voltage and CPU frequency. Because the internal DCDC of the i.MX RT1170 cannot cover the needed maximum current requirement at the junction temperature of 125 °C, the DVFS technique can be used to reduce current drain for compatibility with the internal DCDC. Lowering the processor frequency dynamically can help reduce the chip input current demand and ensure that the chip can continue to work at the junction temperature of 125 °C. The demo is attached. Only IAR and armgcc versions are enabled. The corresponding Application Note can be downloaded in the below link. https://www.nxp.com/docs/en/application-note/AN13267.pdf
查看全文
iMX6Q SABRE Lite WEC2013 Solution from Adeneo Embedded
查看全文
     See a connected Android demo on an i.MX53 in action -  http://www.youtube.com/watch?v=1R1kbya77eE   
查看全文
Freescale i.MX6 UltraLite processor, 528MHz Up to 1GB DDR3 and 32GB on-board eMMC Dual-band 802.11a/b/g/n WiFi and BT 4.1 BLE Ethernet, 5x USB, 8x UART, 2x CAN, SDIO, 78x GPIO Miniature size - 36 x 68 x 5 mm               CL-SOM-iMX6UL​ is a tiny System-on-Module (SoM) / Computer-on-Module (CoM) board designed to serve as a building block in embedded applications. CL-SOM-iMX6UL is build around the Freescale i.MX6 UltraLite system-on-chip featuring an advanced Cortex-A7 ARM CPU. The SoC is coupled with up-to 1GB DDR3 and 32GB of on-board eMMC storage. The processor is supplemented with up-to 4GB DDR3 and 32GB of on-board SSD. Measuring only 36 x 68 x 5 mm CL-SOM-iMX6UL features a wide range of industry standard interfaces - Ethernet, WiFi 802.11, Bluetooth, USB, CAN bus, serial ports, I/O lines and ADC inputs. Low price makes CL-SOM-iMX6UL an ideal selection for cost-sensitive systems, while its small size and low power consumption facilitate integration into portable and space-constrained designs. CL-SOM-iMX6UL is provided with comprehensive documentation​ and full ready-to-run SW support for Linux operating system. CL-SOM-iMX6UL Detailed Spec​ CL-SOM-iMX6UL Block Diagram​ CL-SOM-iMX6UL Development Kit​ CL-SOM-iMX6UL Online Pricing​
查看全文
The WunderBar is the easiest way to create innovative and useful apps to connect smart devices. It works out-of-the-wrapper, contains 6 awesome Beacons (BLE), sensors, and Wifi, and is dead-simple to program. Sensors include: Light, color, distance, temperature, humidity, remote control (IR), accelerometer, and gyroscope, a Grove Connector, and noise/sound sensor which was chosen by the community! Open Source We want everyone involved, that's why we are sharing the layouts on GitHub. If you've got an improvement - fork us, make a change, and send a pull request. If you need to build your own board to integrate with existing systems, be our guest. The liberal Apache License makes this possible. Secure Security for low energy devices over domestic networks is a challenge. We are working with partners to build the highest possible level of security into devices. Our device registration harnesses the security in your smart phone or tablet to create a permanent connection with the OpenSensor Cloud Flexible The WunderBar comes shipped with our own firmware which seemlessly integrates with the OpenSensor Cloud, however you can work with Arduino, or roll your own solution. We have libraries for Arduino, and examples for building your own solution. Read more about it WunderBar by relayr Think this is a cool project?  Rank it below and leave us your comments!
查看全文
This post is about adding cellular modem support on the Boundary Devices i.MX6 boards under Ubuntu.  Many customers have requested cellular modem support on our i.MX6 boards (BD-SL-i.MX6, Nitrogen6X, Nitrogen6_Lite and Nitrogen6_MAX).  Since most cell modems are USB or PCIe devices, configuration is a software task, and mostly done in userspace. The steps are also different for Android, embedded Linux and desktop distributions.  In other words, its complicated. In this post, we’ll walk through all of the steps needed to configure a specific set of modems under Ubuntu as a reference. If you’re using another modem or another userspace, the details may be different, but the fundamentals will be the same. We used the Huawei E3131 USB dongle , and Huawei MU609 Mini-PCIe during this process, and will be adding them to our default kernels going forward. As you can see in this patch, we did have to add some USB device ids and make minor updates to the kernel as provided by the vendor. In the process, we should now also support the following Huawei models for various regions and carriers: MC323   CDMA: Downlink:153.6 kbps, Uplink: 153.6 kbps MU509   WDCMA: Downlink:3.6 Mbps, Uplink: 384 kbps MC509   EVDO: Downlink:3.1 Mbps, Uplink: 1.8 Mbps MU609   HSPA+: Downlink:14.4 Mbps, Uplink: 5.76 Mbps MU709   HSPA+: Downlink:21.6 Mbps, Uplink: 5.76 Mbps ME906   LTE: Downlink:100 Mbps, Uplink: 50 Mbps ME909   LTE: Downlink:100 Mbps, Uplink: 50 Mbps ME936   LTE: Downlink:100 Mbps, Uplink: 50 Mbps For more details including links to images as well as detailed descriptions on how to implement, please visit this blog post:  http://boundarydevices.com/cellular-modems-on-i-mx6-boards/
查看全文
This document outlines how to reserve the first 2MB of memory for the M4 from Linux in order to take advantage of the cache-able RAM region available to the M4
查看全文
This document is an overview file for introducing MYIR's CPU Module MYC-Y6ULX, which is starting at only $18, delivered with shield cover and powered by NXP i.MX 6UltraLite / 6ULL ARM Cortex-A7 processor. It is part of a MYD-Y6ULX development board, capable of running Linux and supports -40 to 85°C working temperature for industrial embedded applications.   The MYC-Y6ULX CPU Module has a compact sizeof 37mm by 39mm, carrying out as many as peripheral signals and IOs through 1.0mm pitch 140-pin stamp hole expansion interface. It is integrated with 528 MHz i.MX 6UltraLite / i.MX 6ULL processor, 256MB DDR3, 256MB Nand Flash (4GB eMMC Flash is optional) and Ethernet PHY. It is populated on MYD-Y6ULX development board base board as the core controller board, thus rich peripherals and interfaces have been extended through connectors and headers to the base board like Serial ports, USB, Ethernet, CAN, Micro SD card, WiFi module, LCD/Touch screen, Camera, Audio as well as a Mini PCIe interface for optional USB based 4G LTE module. The MYD-Y6ULX is a versatile platform and solid reference design delivered with necessary cable accessories and detailed documentations ideal for prototype and evaluation based on i.MX 6UL/6ULL solutions.                                  MYC-Y6ULX CPU Module (delivered with shield cover)   MYIR offers three models with different configurations and features to meet various requirements from customers. MYD-Y6ULX MYD-Y6ULG2-256N256D-50-I MYD-Y6ULY2-256N256D-50-C MYD-Y6ULY2-4E512D-50-C MYC-Y6ULX MYC-Y6ULG2-256N256D-50-I MYC-Y6ULY2-256N256D-50-C MYC-Y6ULY2-4E512D-50-C Processor MCIMX6G2CVM05AB MCIMX6Y2DVM05AA MCIMX6Y2DVM05AA RAM 256MB DDR3 256MB DDR3 512MB DDR3 Flash <span "="" style="font-family: arial, 宋体;">256MB Nand Flash 256MB Nand Flash 4GB eMMC WiFi Support Support Cannot support Reuse SDIO with eMMC Working Temp. -40 to +85 Celsius 0 to +70 Celsius 0 to +70 Celsius WiFi Module can only support -20 to +65 Celsius.                                                                                                        Device Options                                                                  MYD-Y6ULX Development Board The launch of the MYC-Y6ULX CPU Module and MYD-Y6ULX development board provide an expansion solution for development based on NXP’s i.MX 6UltraLite / 6ULL processor after MYIR’s release of the MYS-6ULX Single Board Computer in April.
查看全文