mkfm.sh 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #/bin/sh
  2. #add_firmHead xxx.bin "-n"
  3. #output fn_$1 fa_$1 fs_$1
  4. add_firmHead()
  5. {
  6. local filename="$1"
  7. local firmware_gen="tools/firmware_gen.py"
  8. if [ $# -ge 2 ]; then
  9. firmArgs="$2" #add k230 firmware head
  10. cp ${filename} ${filename}.t; python3 ${firmware_gen} -i ${filename}.t -o f${firmArgs##-}${filename} ${firmArgs};
  11. else
  12. #add k230 firmware head
  13. firmArgs="-n"; cp ${filename} ${filename}.t; python3 ${firmware_gen} -i ${filename}.t -o f${firmArgs##-}_${filename} ${firmArgs};
  14. fi
  15. rm -rf ${filename}.t
  16. }
  17. k230_gzip()
  18. {
  19. local filename="$1"
  20. local k230_gzip_tool="tools/k230_priv_gzip "
  21. ${k230_gzip_tool} -n8 -f -k ${filename} || ${k230_gzip_tool} -n9 -f -k ${filename} || \
  22. ${k230_gzip_tool} -n7 -f -k ${filename} || ${k230_gzip_tool} -n6 -f -k ${filename} || \
  23. ${k230_gzip_tool} -n5 -f -k ${filename} || ${k230_gzip_tool} -n4 -f -k ${filename}
  24. sed -i -e "1s/\x08/\x09/" ${filename}.gz
  25. }
  26. bin_gzip_ubootHead_firmHead()
  27. {
  28. local mkimage="tools/mkimage"
  29. local file_full_path="$1"
  30. local filename=$(basename ${file_full_path})
  31. local mkimgArgs="$2"
  32. local firmArgs="$3"
  33. [ "$(dirname ${file_full_path})" == "$(pwd)" ] || cp ${file_full_path} .
  34. k230_gzip ${filename}
  35. #add uboot head
  36. ${mkimage} -A riscv -C gzip ${mkimgArgs} -d ${filename}.gz ug_${filename}
  37. add_firmHead ug_${filename}
  38. rm -rf ${filename} ${filename}.gz ug_${filename}
  39. }
  40. gen_rtt_bin()
  41. {
  42. local filename="fw_payload.bin"
  43. local CONFIG_MEM_RTT_SYS_BASE="0x200000"
  44. bin_gzip_ubootHead_firmHead "opensbi/build/platform/kendryte/fpgac908/firmware/${filename}" \
  45. "-O opensbi -T multi -a ${CONFIG_MEM_RTT_SYS_BASE} -e ${CONFIG_MEM_RTT_SYS_BASE} -n rtt"
  46. mv fn_ug_${filename} rtt_system.bin
  47. }
  48. build_sbi()
  49. {
  50. cc=~/.tools/gnu_gcc/riscv64-linux-musleabi_for_x86_64-pc-linux-gnu/bin/riscv64-unknown-linux-musl-
  51. if [ -n "$1" ]; then
  52. cc=$1
  53. fi
  54. cd opensbi && make FW_PAYLOAD_PATH=../rtthread.bin FW_FDT_PATH=hw.dtb PLATFORM=kendryte/fpgac908 CROSS_COMPILE=$cc
  55. cd ..
  56. }
  57. build_sbi $1
  58. gen_rtt_bin