Differences
This shows you the differences between the selected revision and the current version of the page.
howto:kernel_upload 2016/01/12 16:43 | howto:kernel_upload 2017/09/06 17:34 current | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | What a plsuaere to find someone who thinks through the issues | + | ====== Uploading a Kernel via the Serial Port ====== |
+ | **WARNING: uploading a kernel via the serial port takes about 20 minutes and uploading a ram disk image can take about 70 minutes, if interrupted will leave your unit inoperable until the procedure is completed correctly. U-boot if used incorrectly can leave your unit completely inoperable, even beyond recovery by this procedure. Since this procedure requires hooking up a serial port, your warranty is already void, but doing anything mentioned here will futher void it. While care has been taken to ensure the following procedure is correct we offer no gurantee that it will not destroy your hardware and burn down your domcile.** | ||
+ | |||
+ | Das U-Boot is a GPL'ed cross-platform boot loader, it is a small piece of software that executes soon after powering up a computer. It will initialize the basic hardware and, if not interrupted, load and execute the Linux Kernel. | ||
+ | |||
+ | By entering a character soon after u-boot starts outputting messages you can interrupt the boot process and communicate directly with u-boot. The version of u-boot supplied with the DSM G600 is severly restricted in the commands it supports, pretty mouch the only useful command is ''loadb''. The ''loadb'' provided by D-Link is non-standard in that instead of loading a binary into RAM, it will take a binary and load it as a kernel and/or a ramdisk image. For loading a kernel, the command is: | ||
+ | loadb k | ||
+ | |||
+ | If you want to load ram disk image instead of kernel then the command is: | ||
+ | loadb r | ||
+ | |||
+ | Loadb uses the ''kermit'' protocol to upload the image. While minicom claims to provide the kermit protocol it does not appear to work with u-boot, so the kermit program is suggested. | ||
+ | |||
+ | Kermit, the program, is an very complex application and it's use is beyond the scope of this document. [[http://docwiki.gumstix.org/Tutorial#Using_Kermit|This link]] describes it's use with a full-featured u-boot. | ||
+ | |||
+ | |||
+ | My .kermrc file looks like: | ||
+ | set line /dev/ttyS0 | ||
+ | set speed 9600 | ||
+ | set carrier-watch off | ||
+ | set handshake none | ||
+ | set flow-control none | ||
+ | robust | ||
+ | set file type bin | ||
+ | set rec pack 1000 | ||
+ | set send pack 1000 | ||
+ | set window 5 | ||
+ | |||
+ | |||
+ | ===== U-Boot command prompt ===== | ||
+ | After starting kermit and connecting the serial port, power-up the unit, when u-boot starts displaying messages press the space-bar. U-boot will display something like: | ||
+ | * | ||
+ | |||
+ | U-Boot 0.2.0 (May 11 2005 - 18:56:16) | ||
+ | |||
+ | CPU: MPC8245 V1.2 at 170.503 MHz: | ||
+ | Board: Sandpoint 8245 | ||
+ | DRAM: 32 MB | ||
+ | FLASH: FUJI_DL323BE | ||
+ | In: serial | ||
+ | Out: serial | ||
+ | Err: serial | ||
+ | Hit any key to stop autoboot: 0 | ||
+ | => | ||
+ | |||
+ | You are now at the u-boot command prompt. Assuming the kernel you want to load is /tftpboot/pImage, enter the u-boot command | ||
+ | loadb k | ||
+ | |||
+ | U-boot will respond with: | ||
+ | ## Ready for binary (kermit) download ... | ||
+ | |||
+ | Now type Ctrl=\c (control backslash follwoed by "c") to return the the kermit prompt and type: | ||
+ | send /tftpboot/pImage | ||
+ | |||
+ | Next you will see transfer statistics: | ||
+ | <code>C-Kermit 8.0.209, 17 Mar 2003, serv.penthouse.lan [192.168.1.20] | ||
+ | |||
+ | Current Directory: /root | ||
+ | Communication Device: /dev/ttyS0 | ||
+ | Communication Speed: 9600 | ||
+ | Parity: none | ||
+ | RTT/Timeout: 01 / 04 | ||
+ | SENDING: /tftpboot/pImage => PIMAGE | ||
+ | File Type: BINARY | ||
+ | File Size: 3008666 | ||
+ | Percent Done: | ||
+ | ...10...20...30...40...50...60...70...80...90..100 | ||
+ | Estimated Time Left: 01:05:31 | ||
+ | Transfer Rate, CPS: 760 | ||
+ | Window Slots: 1 of 1 | ||
+ | Packet Type: D | ||
+ | Packet Count: 28 | ||
+ | Packet Length: 1000 | ||
+ | Error Count: 0 | ||
+ | Last Error: | ||
+ | Last Message: | ||
+ | |||
+ | X to cancel file, Z to cancel group, <CR> to resend last packet, | ||
+ | E to send Error packet, ^C to quit immediately, ^L to refresh screen.</code> | ||
+ | |||
+ | U-boot will now upload the image, when the upload is complete, type ''"connect"'' to reconnect to u-boot to monitor the next step (which will occur automatically). After uploading the image u-boot will check the image, if it is a u-boot compatible image and not too large it will program it into flash. | ||
+ | |||
+ | ## Total Size = 0x002de89a = 3008666 Bytes | ||
+ | ## Start Addr = 0x00100000 | ||
+ | Un-Protect Flash Bank # 1 | ||
+ | Erase Ramdisk from 0xffc10000 to 0xffefffff ....... done | ||
+ | Erased 47 sectors | ||
+ | Ramdisk Size = 3008666 | ||
+ | Copy to Flash... done | ||
+ | Protect Flash Bank # 1 | ||
+ | => | ||
+ | |||
+ | Next you can use ''bootm'' command or cycle power to execute the new kernel, **(be sure the programming is done before removing the power)**. | ||
+ | |||
+ | => bootm FFF10000 FFC20000 |