0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Milk-V Duo開發(fā)板免費(fèi)體驗(yàn) 編譯環(huán)境搭建

范成功 ? 來源:wakojosin ? 作者:wakojosin ? 2023-07-12 09:09 ? 次閱讀

整體來說環(huán)境搭建還是比較簡單的,我用的是wsl的ubuntu 18.04,直接下載了duo-buildroot-sdk-20230616.zip這個(gè)基于buildroot的SDK,然后確保安裝了cmake、device-tree-compiler、ninja、mtools、genext2fs等工具,原則上就是報(bào)錯(cuò)缺什么就裝什么。

通過命令unzip duo-buildroot-sdk-20230616.zip -d ~/work/milkv/duo解壓duo-buildroot-sdk-20230616.zip到~/work/milkv/duo文件夾里面。

wKgZomStXiWAFXbzAAAcJGw17eQ689.png

然后通過運(yùn)行build_milkv.sh進(jìn)行編譯和構(gòu)建鏡像,build_milv.sh腳本的內(nèi)容如下:

#!/bin/bash

MILKV_BOARD_ARRAY=
MILKV_BOARD_ARRAY_LEN=
MILKV_BOARD=
MILKV_BOARD_CONFIG=

MILKV_BOARD_DIR=milkv


function print_info()
{
  printf "e[1;32m%se[0mn" "$1"
}

function print_err()
{
  printf "e[1;31mError: %se[0mn" "$1"
}


# 自動(dòng)檢測并下載工具集
function get_toolchain()
{
  if [ ! -d host-tools ]; then
    print_info "Toolchain does not exist, download it now..."

    toolchain_url="https://sophon-file.sophon.cn/sophon-prod-s3/drive/23/03/07/16/host-tools.tar.gz"
    echo "toolchain_url: ${toolchain_url}"
    toolchain_file=${toolchain_url##*/}
    echo "toolchain_file: ${toolchain_file}"

    wget ${toolchain_url} -O ${toolchain_file}
    if [ $? -ne 0 ]; then
      print_err "Failed to download ${toolchain_url} !"
      exit 1
    fi

    if [ ! -f ${toolchain_file} ]; then
      print_err "${toolchain_file} not found!"
      exit 1
    fi

    print_info "Extracting ${toolchain_file}..."
    tar -xf ${toolchain_file}
    if [ $? -ne 0 ]; then
      print_err "Extract ${toolchain_file} failed!"
      exit 1
    fi

    [ -f ${toolchain_file} ] && rm -rf ${toolchain_file}

  fi
}


# 這里得到了支持的板子MILKV_BOARD_ARRAY=milkv-duo
function get_available_board()
{
  MILKV_BOARD_ARRAY=( $(cd ${MILKV_BOARD_DIR}/; ls boardconfig*.sh | sort | awk -F"[-.]" -v OFS='-' '{print $2, $3}') )
  #echo ${MILKV_BOARD_ARRAY[@]}

  MILKV_BOARD_ARRAY_LEN=${#MILKV_BOARD_ARRAY[@]}
  if [ $MILKV_BOARD_ARRAY_LEN -eq 0 ]; then
    echo "No available board config"
    exit 1
  fi

  #echo ${MILKV_BOARD_ARRAY[@]} | xargs -n 1 | sed "=" | sed "N;s/n/. /"
}

function choose_milkv_board()
{
  # TODO
  echo "choose"
}

function prepare_env()
{
  source ${MILKV_BOARD_CONFIG}

  source build/${MV_BUILD_ENV} > /dev/null 2>&1
  defconfig ${MV_BOARD_LINK} > /dev/null 2>&1

  echo "OUTPUT_DIR: ${OUTPUT_DIR}"  # @build/milkvsetup.sh
}


# 執(zhí)行編譯
function milkv_duo_build()
{
  # clean old img
  old_image_count=`ls ${OUTPUT_DIR}/*.img* | wc -l`
  if [ ${old_image_count} -ge 0 ]; then
    pushd ${OUTPUT_DIR}
    rm -rf *.img*
    popd
  fi


# 不需要重新編譯的時(shí)候可以把clean_all注釋掉,否則每次都會(huì)重新編譯
  clean_all
  build_all
  if [ $? -eq 0 ]; then
    print_info "Build board ${MILKV_BOARD} success!"
  else
    print_err "Build board ${MILKV_BOARD} failed!"
    exit 1
  fi
}


# 打包鏡像
function milkv_duo_pack()
{
  pack_sd_image

  [ ! -d out ] && mkdir out

  image_count=`ls ${OUTPUT_DIR}/*.img | wc -l`
  if [ ${image_count} -ge 0 ]; then
    mv ${OUTPUT_DIR}/*.img out/

    # rename milkv-duo.img file with time
    pushd out
    for img in *.img
    do
      if [ "${img}" == "${MILKV_BOARD}.img" ]; then
        mv $img ${MILKV_BOARD}-`date +%Y%m%d-%H%M`.img
      fi
    done
    popd

    # show latest img
    latest_img=`ls -t out/*.img | head -n1`
    if [ -z "${latest_img// }" ]; then
      print_err "Gen image failed!"
    else
      print_info "Gen image successful: ${latest_img}"
    fi
  else
    print_err "Create sd img failed!"
    exit 1
  fi
}

get_toolchain

get_available_board

if [ $MILKV_BOARD_ARRAY_LEN -eq 1 ]; then
  # Only one board
  print_info "Ready to build: ${MILKV_BOARD_ARRAY[0]}"
  MILKV_BOARD=${MILKV_BOARD_ARRAY[0]}
else
  # no arg
  if [ $# -lt 1 ]; then
    choose_milkv_board || exit 0
  fi

  # with board name
  if [ $# -ge 1 ]; then
    if [[ ${MILKV_BOARD_ARRAY[@]} =~ (^|[[:space:]])"${1}"($|[[:space:]]) ]]; then
      MILKV_BOARD=${1}
      echo "$MILKV_BOARD"
    else
      print_err "${1} not supported!"
      echo "Available boards: [ ${MILKV_BOARD_ARRAY[@]} ]"
      exit 1
    fi
  fi
fi

if [ -z "${MILKV_BOARD// }" ]; then
  print_err "No board specified!"
  exit 1
fi

export MILKV_BOARD="${MILKV_BOARD}"

MILKV_BOARD_CONFIG=${MILKV_BOARD_DIR}/boardconfig-${MILKV_BOARD}.sh

if [ ! -f ${MILKV_BOARD_CONFIG} ]; then
  print_err "${MILKV_BOARD_CONFIG} not found!"
  exit 1
fi

prepare_env

milkv_duo_build
milkv_duo_pack

腳本加了一些簡單的注釋,大體邏輯就是

  1. 檢測并下載工具集;
  2. 選擇板子;
  3. 根據(jù)板子到處環(huán)境;
  4. 執(zhí)行編譯;
  5. 構(gòu)建鏡像;

最后腳本執(zhí)行完成會(huì)輸出一個(gè)構(gòu)建img成功的信息,如下圖綠色的內(nèi)容,時(shí)間戳?xí)鶕?jù)構(gòu)建時(shí)間而不一樣。

wKgZomStYdyAZh6aAAAhlQYnTNE650.png

內(nèi)核開發(fā)環(huán)境可以用了,可以學(xué)習(xí)內(nèi)核代碼了,可以通過Windows下的vscode進(jìn)行編輯然后在vscode終端里面進(jìn)行編譯。

如果編譯過程遇到類似'Your PATH contains spaces, TABs, and/or newline (n) characters.'的錯(cuò)誤,是因?yàn)閃SL默認(rèn)會(huì)自動(dòng)添加Windows環(huán)境變量到wsl中,可以通過關(guān)閉自動(dòng)添加,或是重新設(shè)置PATH來解決。我是選擇重新設(shè)置環(huán)境變量,即將帶空格的windows環(huán)境變量刪除,因?yàn)槲倚枰褂脀indows下的vscode,如果關(guān)閉自動(dòng)添加,就用不了windows下的軟件了。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 硬件設(shè)計(jì)
    +關(guān)注

    關(guān)注

    18

    文章

    372

    瀏覽量

    44466
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    4771

    瀏覽量

    96176
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    646

    瀏覽量

    32671
  • SDK
    SDK
    +關(guān)注

    關(guān)注

    3

    文章

    1006

    瀏覽量

    45417
  • 環(huán)境搭建
    +關(guān)注

    關(guān)注

    0

    文章

    53

    瀏覽量

    9027
  • Milk-V Duo
    +關(guān)注

    關(guān)注

    2

    文章

    28

    瀏覽量

    157
收藏 人收藏

    評論

    相關(guān)推薦

    Milk-V Duo】1、入門篇

    入門milk-V Duo開發(fā)板
    的頭像 發(fā)表于 07-07 11:21 ?1424次閱讀
    【<b class='flag-5'>Milk-V</b> <b class='flag-5'>Duo</b>】1、入門篇

    Milk-V Duo開發(fā)板免費(fèi)體驗(yàn)】Milk-V初次使用

    Milk-V Duo開發(fā)板免費(fèi)體驗(yàn)】Milk-V初次使用
    的頭像 發(fā)表于 08-08 09:03 ?2273次閱讀
    【<b class='flag-5'>Milk-V</b> <b class='flag-5'>Duo</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>免費(fèi)</b>體驗(yàn)】<b class='flag-5'>Milk-V</b>初次使用

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】 + 系統(tǒng)鏡像燒錄以及登錄

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】+系統(tǒng)鏡像燒錄以及登錄 一.Milk-V Duo
    發(fā)表于 07-11 11:43

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】Milk-V Duo之開箱初體驗(yàn)

    一,第一印象 外觀設(shè)計(jì)方面,Milk-V Duo以簡約而精致的風(fēng)格為主,采用沉金工藝,給人一種高端大氣的感覺。開發(fā)板的尺寸小巧,便于攜帶和使用,在我拿到的所有的開發(fā)板中,也只有
    發(fā)表于 07-16 01:15

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】0. duo編譯環(huán)境搭建

    ://community.milkv.io/ 二、試用信息 試用:【RISC-V 專題】Milk-V Duo 開發(fā)板首發(fā)免費(fèi)試用 - 電子技
    發(fā)表于 07-22 22:03

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】Milk-V Duo 開發(fā)板學(xué)習(xí)初體驗(yàn)

    第一次申請成功,心情很是喜悅,經(jīng)過幾天的等待收到了我心心念念的Milk-V Duo 開發(fā)小板。 迫不及待的開始了學(xué)習(xí)初體驗(yàn),先犧牲下愛車的行車記錄儀SD卡貢獻(xiàn)下 1、直接下載鏡像
    發(fā)表于 07-28 15:58

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】開發(fā)板使用3

    接上文 【Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】開發(fā)板使用1 |和接上文 【Milk-V
    發(fā)表于 07-29 08:17

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】Windows開發(fā)環(huán)境搭建

    感謝電子發(fā)燒友論壇和算能提供的Milk-V Duo 開發(fā)板試用機(jī)會(huì)。 Milk-V Duo的標(biāo)準(zhǔn)開發(fā)
    發(fā)表于 07-29 09:10

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】milkv-duo 申請成功體驗(yàn)

    Duo都能為我們提供良好的開發(fā)環(huán)境和體驗(yàn)。 此外,開源社區(qū)的支持和資源也為我們提供了更多的可能性。他們可以通過與其他開發(fā)者分享經(jīng)驗(yàn)和交流想法,共同探索
    發(fā)表于 07-29 14:31

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】初步體驗(yàn) + 搭建開發(fā)環(huán)境

    鏈接依賴過去即可了,后續(xù)可以直接修改文件系統(tǒng)去燒錄。【Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】OpenCV的交叉編譯 - RISC-
    發(fā)表于 08-01 12:49

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】Python開發(fā)環(huán)境搭建

    Milk-V Duo是一款基于算能CV1800B芯片的開發(fā)板。 通過參與活動(dòng)拿到一塊試用,開發(fā)板身材小巧,大小和樹莓派Pico相當(dāng),引腳也基本一致,但是功能更強(qiáng)大一些,能夠運(yùn)行基于LI
    發(fā)表于 08-06 15:49

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】(二)ubuntu下燒錄linux系統(tǒng)到sd,并在milk開發(fā)版運(yùn)行l(wèi)inux系統(tǒng)

    ([活動(dòng)] # 【Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】(一)ubuntu編譯環(huán)境
    發(fā)表于 08-11 19:55

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】Milk-V Duo 開發(fā)板初體驗(yàn)

    今天收到 ,打開快遞的第一感覺就是非常精致小巧,一個(gè)黑色的小盒子及一塊非常小巧但功能非常完善的開發(fā)板。 Milk-V Duo是一款基于算能 CV1800B芯片的MPU,能夠運(yùn)行基于LINUX
    發(fā)表于 08-18 00:26

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】4-Linux控制小車動(dòng)作(原創(chuàng))首發(fā)

    接上三篇: [接上兩篇:【Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】3-Linux控制小車方向https://bbs.elecfans.com/jishu_2371135_1_1.html
    發(fā)表于 08-21 02:11

    Milk-V Duo 開發(fā)板免費(fèi)體驗(yàn)】初體驗(yàn)及開箱視頻

    剛剛收到開發(fā)板,給大家做個(gè)視頻來初步了解以下Milk-V Duo 開發(fā)板。 Milk-V Duo
    發(fā)表于 08-22 23:59