====== picoPrint Software Documentation ====== ===== Install Gentoo Linux on Cubieboard2 ===== ==== Install & bootstrap crossdev ==== $ emerge -av crossdev Create a stable armv7a-hardfloat-linux-gnueabi tool chain for the Cubieboard2: $ crossdev -S -t armv7a-hardfloat-linux-gnueabi ==== Install and compile u-boot ==== $ mkdir gentoo-cb2 $ cd gentoo-cb2 $ git clone https://github.com/linux-sunxi/u-boot-sunxi.git $ cd u-boot-sunxi Start clean and configure Cubieboard2 default u-boot parameters $ CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- make distclean $ CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- make Cubieboard2_config should return Configuring for Cubieboard2 - Board: sun7i, Options: CUBIEBOARD2,SPL,SUNXI_GMAC,STATUSLED=244,STATUSLED1=245,FAST_MBUS Build u-boot $ CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- make -j4 should return something like tools/mkimage -A arm -T firmware -C none \ -O u-boot -a 0x4a000000 \ -e 0 \ -n "U-Boot 2014.01-rc1-09153-gc75ea90 for sunxi board" \ -d u-boot.bin u-boot.img Image Name: U-Boot 2014.01-rc1-09153-gc75ea9 Created: Wed Jan 8 10:47:48 2014 Image Type: ARM U-Boot Firmware (uncompressed) Data Size: 227820 Bytes = 222.48 kB = 0.22 MB Load Address: 4a000000 Entry Point: 00000000 tr "\000" "\377" < /dev/zero | dd ibs=1 count=32768 \ of=spl/sunxi-spl-pad.bin 2>/dev/null and produce the following files we will need: -rw-r--r-- 227884 Jan 8 10:47 ./gentoo-cb2/u-boot-sunxi/u-boot.img -rwxr-xr-x 17644 Jan 8 10:47 ./gentoo-cb2/u-boot-sunxi/spl/u-boot-spl.bin ==== Install and compile kernel ==== === Get the sources === $ cd .. $ git clone https://github.com/linux-sunxi/linux-sunxi.git $ cd linux-sunxi $ git checkout sunxi-3.4 === Prepare the kernel === Use default config to get something to start with $ CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- ARCH=arm make sun7i_defconfig Tweak your kernel according to your wishes $ CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- ARCH=arm make menuconfig **The kernel seems to fail to compile when the following settings are enabled:** * Networking support -> [*] RF Switch subsystem support //Solution: Disable RF Switch subsystem support (not needed on CB2 anyways).// * Power Management options -> [*] Run-time PM core functionality //Solution: Disable Run-time PM core functionality or apply the following patch.// --- arch/arm/mach-sun7i/pm/standby/mem_printk.c 2014-01-08 12:42:26.641644236 +0100 +++ /tmp/mem_printk.c 2014-01-08 12:42:18.706835502 +0100 @@ -165,7 +165,7 @@ int negative = 0; //defualt is positive value int i; int j; - char digit_string[] = "0123456789ABCDEF"; + char * digit_string = "0123456789ABCDEF"; if(value == 0) { @@ -211,7 +211,7 @@ char stack[16]; int i; int j; - char digit_string[] = "0123456789ABCDEF"; + char * digit_string = "0123456789ABCDEF"; if(value == 0) { @@ -366,7 +366,7 @@ { //fill with space ' ' when align request, //the max align length is 16 byte. - char fill_ch[] = " "; + char * fill_ch = " "; if (len < align) { //fill at right Compile kernel $ CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- ARCH=arm make -j4 uImage Image Name: Linux-3.4.75-00001-g9cfbbed-dirt Created: Wed Jan 8 12:55:16 2014 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 4385184 Bytes = 4282.41 kB = 4.18 MB Load Address: 40008000 Entry Point: 40008000 Image arch/arm/boot/uImage is ready Compile modules $ CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- ARCH=arm make -j4 modules ==== Install and compile sunxi-tools ==== $ cd .. $ git clone https://github.com/linux-sunxi/sunxi-tools.git $ cd sunxi-tools $ make bin2fex fex2bin $ git clone https://github.com/linux-sunxi/sunxi-boards.git emerge -pv nginx pycurl mjpg-streamer ===== GPIOs ===== http://docs.cubieboard.org/tutorials/common/using_python_program_control_gpios ===== nginx config ===== worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; map $http_upgrade $connection_upgrade { default upgrade; '' close; } upstream "octoprint" { server 127.0.0.1:5000; } upstream "framecam" { server 127.0.0.1:8080; } server { listen 80; server_name feliks; client_max_body_size 50M; location /framecam/ { proxy_pass http://framecam/; proxy_buffering off; } location /sockjs { proxy_pass http://octoprint; # NO trailing slash proxy_buffering off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } location / { set $pp_d http://127.0.0.1:5000; if ( $args = 'action=stream' ) { set $pp_d http://127.0.0.1:8080/$is_args$args; } if ( $args = 'action=snapshot' ) { set $pp_d http://127.0.0.1:8080/$is_args$args; } proxy_pass $pp_d; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host:$server_port; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Request-Start $msec; } # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } } {{tag>lab 3d-printer picoprint robot cubieboard gentoo}} {{keywords>Apollo-NG hackerspace hacker space development makerspace fablab lab community open-resource open resource mobile hackbus 3d-printer picoprint robot cubieboard gentoo}} ~~DISCUSSION~~