U-boot (plus MAC address) » History » Version 6
Alex Seferidis, 07/16/2025 01:26 PM
| 1 | 1 | Alex Seferidis | # U-boot (plus MAC address) |
|---|---|---|---|
| 2 | |||
| 3 | 6 | Alex Seferidis | **SOS** : do not use u-boot from Yocto (it has older rkbin files, and is unstable) |
| 4 | 1 | Alex Seferidis | Use u-boot provided by Rockchip SDK |
| 5 | |||
| 6 | 1. copy board.c to /arch/arm/mach-rockchip |
||
| 7 | |||
| 8 | 2. file: configs/rk3568_defconfig |
||
| 9 | CONFIG_BOOTDELAY=5 |
||
| 10 | |||
| 11 | Note: Read Docs: /home/SDK_4_19/docs |
||
| 12 | |||
| 13 | use these commands to build uboot: |
||
| 14 | |||
| 15 | ``` |
||
| 16 | ./build.sh device/rockchip/rk356x/BoardConfig-evb2-lp4x-v10.mk rk3566-evb2-lp4x-v10.mk |
||
| 17 | ./build.sh uboot |
||
| 18 | ``` |
||
| 19 | 2 | Alex Seferidis | |
| 20 | <img src="uboot.png" width="50%"> |
||
| 21 | 4 | Alex Seferidis | |
| 22 | 6 | Alex Seferidis | With this uboot, MAC address can be written to flash. Then uboot read MAC address and provides it to Linux. |
| 23 | 4 | Alex Seferidis | |
| 24 | example how to write MAC with PHP script (this script runs on device): |
||
| 25 | |||
| 26 | 6 | Alex Seferidis | mmcblk0 is u-boot partition |
| 27 | 5 | Alex Seferidis | Mac address info is located after 7170 bytes (or in HEX at address 0x1C02) |
| 28 | |||
| 29 | 4 | Alex Seferidis | ``` php |
| 30 | $mac = $_POST['mac']; |
||
| 31 | $mac_Arr = explode(":", $mac); |
||
| 32 | |||
| 33 | if (count($mac_Arr) != 6) { |
||
| 34 | echo "MAC address ERROR"; |
||
| 35 | exit(); |
||
| 36 | } |
||
| 37 | |||
| 38 | |||
| 39 | chdir("/data/firmware/htdocs"); |
||
| 40 | $output = shell_exec('dd if=/dev/mmcblk0 skip=7170 of=mac.img bs=512 count=1'); |
||
| 41 | |||
| 42 | $filesize = filesize('mac.img'); |
||
| 43 | $fp = fopen('mac.img', 'rb'); |
||
| 44 | $binary = fread($fp, $filesize); |
||
| 45 | fclose($fp); |
||
| 46 | |||
| 47 | $binary[0] = chr(hexdec($mac_Arr[0])); |
||
| 48 | $binary[1] = chr(hexdec($mac_Arr[1])); |
||
| 49 | $binary[2] = chr(hexdec($mac_Arr[2])); |
||
| 50 | $binary[3] = chr(hexdec($mac_Arr[3])); |
||
| 51 | $binary[4] = chr(hexdec($mac_Arr[4])); |
||
| 52 | $binary[5] = chr(hexdec($mac_Arr[5])); |
||
| 53 | |||
| 54 | $fp = fopen('mac_new.img', 'wb'); |
||
| 55 | fwrite($fp, $binary); |
||
| 56 | fclose($fp); |
||
| 57 | |||
| 58 | $output = shell_exec('dd if=mac_new.img of=/dev/mmcblk0 seek=7170 bs=512 count=1'); |
||
| 59 | ``` |