create_sunxi_boot_files.sh 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #/bin/sh
  2. ######################
  3. # Sunxi compilation #
  4. ######################
  5. show_usage() {
  6. cat <<EOF
  7. # NAME
  8. $(basename $0) -- Script to build sunxi kernel and boot files
  9. # OPTIONS
  10. -o offline mode (mandatory)
  11. -t olinux type (a10lime, a20lime, a20lime2, a20micro) (default: a20lime)
  12. EOF
  13. exit 1
  14. }
  15. while getopts ":ot:" opt; do
  16. case $opt in
  17. o)
  18. offline=$OPTARG
  19. ;;
  20. t)
  21. olinux=$OPTARG
  22. ;;
  23. \?)
  24. show_usage
  25. ;;
  26. esac
  27. done
  28. clone_or_pull (){
  29. project=$1
  30. repo=$2
  31. name=$(echo $project | sed 's/.git$//')
  32. if [ "$offline" ] ; then
  33. cd /olinux/sunxi/$name/ && make clean
  34. return 0
  35. fi
  36. if [ -d /olinux/sunxi/$name/ ] ; then
  37. cd /olinux/sunxi/$name/ && make clean && git pull --depth 1
  38. else
  39. git clone --depth 1 $repo/$project /olinux/sunxi/$name/
  40. fi
  41. }
  42. if [ "$olinux" = "a20lime2" ] ; then
  43. u_boot_config="A20-OLinuXino-Lime2_defconfig"
  44. sunxi_board_config="a20/a20-olinuxino_lime2.fex"
  45. kernel_defconfig="a20_defconfig"
  46. elif [ "$olinux" = "a20micro" ] ; then
  47. u_boot_config="A20-OLinuXino_MICRO_defconfig"
  48. sunxi_board_config="a20/a20-olinuxino_micro.fex"
  49. kernel_defconfig="a20_defconfig"
  50. elif [ "$olinux" = "a10lime" ] ; then
  51. u_boot_config="A10-OLinuXino-Lime_defconfig"
  52. sunxi_board_config="a10/a10-olinuxino-lime.fex"
  53. kernel_defconfig="a10_defconfig"
  54. else
  55. u_boot_config="A20-OLinuXino-Lime_defconfig"
  56. sunxi_board_config="a20/a20-olinuxino_lime.fex"
  57. kernel_defconfig="a20_defconfig"
  58. fi
  59. mkdir -p /olinux/sunxi/
  60. # Sunxi u-boot
  61. #clone_or_pull u-boot-sunxi
  62. clone_or_pull u-boot.git git://git.denx.de
  63. cd /olinux/sunxi/u-boot && make CROSS_COMPILE=arm-linux-gnueabihf $u_boot_config && make CROSS_COMPILE=arm-linux-gnueabihf-
  64. # Sunxi kernel
  65. clone_or_pull linux-sunxi.git https://github.com/linux-sunxi
  66. cp /olinux/$kernel_defconfig /olinux/sunxi/linux-sunxi/arch/arm/configs/.
  67. cd /olinux/sunxi/linux-sunxi/ && make ARCH=arm $kernel_defconfig
  68. cd /olinux/sunxi/linux-sunxi/ && make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j2 uImage
  69. cd /olinux/sunxi/linux-sunxi/ && make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j2 INSTALL_MOD_PATH=out modules
  70. cd /olinux/sunxi/linux-sunxi/ && make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j2 INSTALL_MOD_PATH=out modules_install
  71. # Sunxi board configs
  72. clone_or_pull sunxi-boards.git https://github.com/linux-sunxi
  73. # Sunxi tools
  74. clone_or_pull sunxi-tools.git https://github.com/linux-sunxi
  75. cd /olinux/sunxi/sunxi-tools/ && make
  76. cd /olinux/sunxi/ && rm -f script.bin && ./sunxi-tools/fex2bin sunxi-boards/sys_config/$sunxi_board_config script.bin
  77. cd /olinux/sunxi/ && chmod +x script.bin