User Tools

Site Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
mission:resources:picoprint:software [2014/01/08 09:44] – created chronomission:resources:picoprint:software [2015/01/26 22:15] (current) – [GPIOs] chrono
Line 6: Line 6:
  
 <code> <code>
-emerge -av crossdev+emerge -av crossdev
 </code> </code>
  
-Create a cubieboard2 specific cross-development environment:+Create a stable armv7a-hardfloat-linux-gnueabi tool chain for the Cubieboard2:
  
 <code> <code>
-crossdev -S -t armv7a-hardfloat-linux-gnueabi+crossdev -S -t armv7a-hardfloat-linux-gnueabi
 </code> </code>
  
Line 18: Line 18:
  
 <code> <code>
-mkdir gentoo-cb2 +mkdir gentoo-cb2 
-cd gentoo-cb2 +cd gentoo-cb2 
-git clone https://github.com/linux-sunxi/u-boot-sunxi.git+git clone https://github.com/linux-sunxi/u-boot-sunxi.git 
 +$ cd u-boot-sunxi
 </code> </code>
 +
 +Start clean and configure Cubieboard2 default u-boot parameters
 +
 +<code>
 +$ CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- make distclean
 +$ CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- make Cubieboard2_config
 +</code>
 +
 +should return
 +
 +<code>
 +Configuring for Cubieboard2 - Board: sun7i, Options: CUBIEBOARD2,SPL,SUNXI_GMAC,STATUSLED=244,STATUSLED1=245,FAST_MBUS
 +</code>
 +
 +Build u-boot
 +
 +<code>
 +$ CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- make -j4
 +</code>
 +
 +should return something like
 +
 +<code>
 +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
 +</code>
 +
 +and produce the following files we will need:
 +
 +<code>
 +-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
 +</code>
 +
 +==== Install and compile kernel ====
 +
 +=== Get the sources ===
 +
 +<code>
 +$ cd ..
 +$ git clone https://github.com/linux-sunxi/linux-sunxi.git
 +$ cd linux-sunxi
 +$ git checkout sunxi-3.4
 +</code>
 +
 +=== Prepare the kernel ===
 +
 +Use default config to get something to start with
 +
 +<code>
 +$ CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- ARCH=arm make sun7i_defconfig
 +</code>
 +
 +Tweak your kernel according to your wishes
 +
 +<code>
 +$ CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- ARCH=arm make menuconfig
 +</code>
 +
 +<WRAP round tip>
 +**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.//
 +</WRAP>
 +
 +<sxh c; toolbar:false>
 +--- 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
 +</sxh>
 +
 +
 +
 +Compile kernel 
 +
 +<code>
 +$ CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- ARCH=arm make -j4 uImage
 +</code>
 +
 +<code>
 +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
 +</code>
 +
 +Compile modules 
 +
 +<code>
 +$ CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- ARCH=arm make -j4 modules
 +</code>
 +
 +==== Install and compile sunxi-tools ====
 +
 +<code>
 +$ 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
 +</code>
 +
 +<code>
 +emerge -pv nginx pycurl mjpg-streamer
 +</code>
 +
 +===== GPIOs =====
 +
 +http://docs.cubieboard.org/tutorials/common/using_python_program_control_gpios
 +===== nginx config =====
 +
 +<code>
 +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;
 +        }
 +    }
 +}
 +</code>
 +
 +{{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~~