制作Cubie版OpenWRT(功能齐全,大小仅有11M)
Allwinner Sun4i/5i/6i/7i (sunxi)
Various vendors are offering development boards / single-board computer based on the Allwinner SoCs. These are running various flavors of the A1x/A20 SoCs, with different buildouts. The mach is called "sunxi".
For some specs rather see Allwinner_Technology#A-Series.
Supported Versions
Model Version | Launch Date | OpenWrt Version Supported | Model Specific Notes |
---|---|---|---|
A10 | - | trunk | Single Cortex-A8 |
A10s | - | trunk | Single Cortex-A8 |
A13 | - | trunk | Single Cortex-A8 |
A20 | - | trunk | Dual Cortex-A7 |
A23 | - | na | Dual Cortex-A7 |
A31 | - | na | Quad Cortex-A7 |
A33 | - | na | Quad Cortex-A7 |
A80 | - | na | 8-core big.LITTLE (4x A15 + 4x A7) |
Hardware Highlights
Model | SoC | RAM | Storage | Network | USB | Serial | JTAG | UEXT | Other | linux-sunxi page |
---|---|---|---|---|---|---|---|---|---|---|
BananaPi | A20 | 1024MiB | μSD | Gigabit Ethernet | 2x USB2 | yes | n/a | n/a | HDMI, SATA, audio, IR, RCA video out, CSI | Page |
Cubieboard | A10 | 1024MiB | μSD, 4GB NAND | Fast Ethernet | 2x USB2 | yes | n/a | yes | HDMI, SATA, audio | Page |
Cubieboard2 | A20 | 1024MiB | μSD, 4GB NAND | Fast Ethernet | 2x USB2 | yes | n/a | yes | HDMI, SATA, audio | Page |
Cubietruck | A20 | 2048MiB | μSD, 8GB NAND | BCM WiFi, Gigabit Ethernet | 2x USB2 | yes | n/a | n/a | HDMI, VGA, SATA, audio, IR, TOSlink | Page |
Lamobo R1 | A20 | 1024MiB | μSD | RTL8192CU 802.11bgn 2T2R WiFi BCM53125 Gigabit Ethernet switch with 5 ports |
1x USB2 Host, 1x USB2 OTG | yes | n/a | n/a | HDMI, SATA, audio, IR, CSI | Page |
Olimex A10-OLinuXino-LIME | A10 | 512MiB | μSD | Fast Ethernet | 2x USB2 | yes | n/a | yes | HDMI, SATA | Page |
Olimex A13-OLinuXino-WIFI | A13 | 512MiB | μSD | RTL WiFi | 3x USB2 | yes | n/a | yes | VGA | Page |
Olimex A13-SOM | A13 | 256/512MiB | μSD, 4GB NAND | RTL WiFi | n/a | yes | n/a | n/a | n/a | |
Olimex A20-OLinuXino-MICRO | A20 | 1024GiB | SD, μSD, 4GB NAND | Fast Ethernet | 2x USB2 | yes | n/a | yes | HDMI, SATA, audio | Page |
pcDuino/pcDuinoV2 | A10 | 1024MiB | μSD, 2GB NAND | Fast Ethernet | 2x USB2 | yes | n/a | n/a | HDMI / Arduino headers | Page |
pcDuino3 | A20 | 1024MiB | μSD, 4GB NAND | Fast Ethernet, RTL8188EU WiFi | 1x USB2 | yes | n/a | n/a | HDMI / Arduino headers, SATA, IR | Page |
UEXT is an open standard port to provide serial, I²C and SPI expansion ports.
Installation
This section details what is required to install and upgrade OpenWrt. The generic procedure is described here: generic.flashing; this devices don't have a flash chip soldered to the PCB but an SD-Card slot.
Status
Patches have been back-ported from the http://linux-sunxi.org/ community, including device trees, clocks, timers, PIO, ethernet, USB, and, MMC. These patches are currently being mainlined - eta. Linux 3.14 and 3.15 - by the community.
-
SPL: done
-
u-boot: done
-
kernel: done
-
rootfs: done
You have the option to boot the board from initramfs, SD card (recommended), USB storage, or NFS.
Working
-
SD/MMC
-
USB EHCI/OHCI
-
EMAC (10/100 Mbps)
-
A20 GMAC (10/100/1000 Mbps)
-
SATA
-
Clocks
-
Timers
-
SMP with HYP patches for 2014.04 u-boot
-
Various devices, GPIO, IR
Being worked on
-
NAND (have some snippets already)
-
SPI (need integration)
Not being worked on
-
Sound - need bump to 3.18
Installation process
Pre-built SD card images
You can build an SD card image directly from buildroot for your device.
-
Check out trunk - https://dev.openwrt.org/wiki/GetSource
-
Run make menuconfig
-
Select device profile - f.e. BananaPi
-
Start the build
-
The built SD card images will be in bin/sunxi
-
dd if=bin/sunxi/openwrt-sunxi-Bananapi-sdcard-vfat-ext4.img of=/dev/sdc
Assembling the SD card image yourself
OpenWrt trunk images are located in snapshots/trunk/sunxi/ folder.
For example if you have Cubieboard3/Cubietruck then download these files from the server:
SD layout
SD layout with 512 byte blocks:
NAME | start block | size |
MBR | 0 | 1 block |
u-boot-with-spl.bin | 16 (8 KB) | ~250 KB |
FAT | 2048 (1 MB) | 15 MB |
EXT4 | 32768 (16 MB) | rest |
SD preparation
We assume /dev/mmcblk0 is the SD card and Cubietruck is the board.
-
Partition the SD card. Two partitions are created. The first is the boot partition, /dev/mmcblk0p1. The second is the root partition, /dev/mmcblk0p2.
# fdisk /dev/mmcblk0 Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-15523839, default 2048): 2048 Last sector, +sectors or +size{K,M,G} (2048-15523839, default 15523839): +15M Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p Partition number (1-4, default 2): 2 First sector (32768-15523839, default 32768): 32768 Last sector, +sectors or +size{K,M,G} (32768-15523839, default 15523839): +240M Command (m for help): p Disk /dev/mmcblk0: 7948 MB, 7948206080 bytes 4 heads, 16 sectors/track, 242560 cylinders, total 15523840 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x17002d14 Device Boot Start End Blocks Id System /dev/mmcblk0p1 2048 32767 15360 83 Linux /dev/mmcblk0p2 32768 524287 245760 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table.
-
Re-read the new partition table layout (e.g. by removing and re-inserting the SD card).
-
Copy the SPL + U-boot image to the card
# dd if=bin/sunxi/uboot-sunxi-Cubietruck/openwrt-sunxi-Cubietruck-u-boot-with-spl.bin of=/dev/mmcblk0 bs=1024 seek=8
-
Create a boot (FAT32) partition.
# mkfs.vfat /dev/mmcblk0p1
-
Mount the boot partition.
# mount -t vfat /dev/mmcblk0p1 /mnt
-
Copy the U-Boot environment file uEnv.txt to the boot partition.
# cp bin/sunxi/uboot-sunxi-Cubietruck/openwrt-sunxi-Cubietruck-uEnv.txt /mnt/uEnv.txt
-
Copy the device tree data to the boot partition.
# cp bin/sunxi/sun7i-a20-cubietruck.dtb /mnt/dtb
-
Copy the kernel image to the boot partition.
# cp bin/sunxi/openwrt-sunxi-uImage /mnt/uImage
-
Resize the root filesystem image to match the partition size.
# resize2fs bin/sunxi/openwrt-sunxi-root.ext4 240M
-
Create the root filesystem.
# dd if=bin/sunxi/openwrt-sunxi-root.ext4 of=/dev/mmcblk0p2 bs=128k
-
Wrap up (flush buffers and unmount boot partition).
# sync # umount /mnt
Upgrading OpenWrt
*WiP*
If you have already installed OpenWrt and like to reflash for e.g. upgrading to a new OpenWrt version you can upgrade using the mtd command line tool. It is important that you put the firmware image into the ramdisk (/tmp) before you start flashing.
Links
For further information about the SoCs, go to http://linux-sunxi.org/Main_Page
How can you help
-
We're looking for any A31 / A80 hardware at the moment
-
Hardware donations - https://dev.openwrt.org/wiki/WantedHardware
-
Test GPIOs and peripherals on A13/A20 and provide feedback