在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

測(cè)試新唐nuc980串口功能的過程

CHANBAEK ? 來源:嵌入式學(xué)習(xí)和實(shí)踐 ? 作者:嵌入式學(xué)習(xí)和實(shí)踐 ? 2023-09-04 16:07 ? 次閱讀

測(cè)試新唐nuc980串口功能的過程,如下:

  1. 直接下載使用官方的ubuntu系統(tǒng)。
  2. 直接使用官方的文件,在家目錄下 NUC970_Buildroot 目錄下或者自己git clone NUC970_Buildroot 工程也可以,克隆地址如下:
git clone https://github.com/OpenNuvoton/NUC970_Buildroot
或者
git clone https://gitee.com/OpenNuvoton/NUC970_Buildroot.git
  1. 查看配置文件 ls configs/* ,會(huì)顯示當(dāng)前的配置文件,我們選擇輸入 make nuvoton_nuc980_iot_defconfig ,產(chǎn)生預(yù)設(shè)的configuration file,預(yù)設(shè)的configuration 會(huì)聯(lián)網(wǎng)安裝U-Boot、Linux Kernel、root file system、toolchain ....... 等常用的工具。如果想修改預(yù)設(shè)的 configuration ,輸入 make menuconfig ,進(jìn)入配置界面進(jìn)行配置。

4.輸入 **make ** ,開始進(jìn)行 Compile ,成功后 NUC980 BSP 相關(guān)的文件就會(huì)出現(xiàn)在NUC970_Buildroot目錄下面的output 這個(gè)子目錄。如下:

圖片

  1. NUC970_Buildroot 文件夾下輸入 sudo ./install_nuc980_bsp.sh , 安裝下載nuc980bsp包。執(zhí)行完腳本,會(huì)出現(xiàn) nuc980bsp 文件夾。

圖片

  1. 自行編譯nuc980bsp包中的測(cè)試?yán)?a href="http://m.xsypw.cn/tags/uart/" target="_blank">uart的demo,或者按照如下代碼編寫即可。編譯uart 文件,將生成的可執(zhí)行文件uart_demo,復(fù)制到NUC970_Buildroot/output/target/usr/bin。
/****************************************************************************
 *                                                                          *
 * Copyright (c) 2014 Nuvoton Technology Corp. All rights reserved.         *
 *                                                                          *
 ****************************************************************************/

/****************************************************************************
 * 
 * FILENAME
 *     uart_test.c
 *
 * VERSION
 *     1.0
 *
 * DESCRIPTION
 *     This is the test program used to test the UARTs on NUC980 EV board
 *
 * DATA STRUCTURES
 *     None
 *
 * FUNCTIONS
 *     None
 *
 * HISTORY
 *     
 *
 * REMARK
 *     None
 ****************************************************************************/
#include     < stdio.h >
#include     < stdlib.h >
#include     < unistd.h > 
#include     < sys/types.h > 
#include     < sys/stat.h > 
#include     < fcntl.h > 
#include     < termios.h >  
#include     < errno.h >
#include     < string.h >
#include   < signal.h >
#include    < pthread.h >


#define FALSE 0
#define TRUE  1


int fd[2];


pthread_t threads[10];


char buff[101];


static struct termios newtios,oldtios; /*termianal settings */
static int saved_portfd=-1;            /*serial port fd */




static void reset_tty_atexit(void)
{
  if(saved_portfd != -1)
  {
    tcsetattr(saved_portfd,TCSANOW,&oldtios);
  } 
}


/*cheanup signal handler */
static void reset_tty_handler(int signal)
{
  if(saved_portfd != -1)
  {
    tcsetattr(saved_portfd,TCSANOW,&oldtios);
  }
  _exit(EXIT_FAILURE);
}


static int open_port(const char *portname)
{
  struct sigaction sa;
  int portfd;


  printf("opening serial port:%sn",portname);
  /*open serial port */
  if((portfd=open(portname,O_RDWR | O_NOCTTY)) < 0 )
  {
       printf("open serial port %s fail n ",portname);
       return portfd;
  }


  /*get serial port parnms,save away */
  tcgetattr(portfd,&newtios);
  memcpy(&oldtios,&newtios,sizeof newtios);
  /* configure new values */
  cfmakeraw(&newtios); /*see man page */
  newtios.c_iflag |=IGNPAR; /*ignore parity on input */
  newtios.c_oflag &= ~(OPOST | ONLCR | OLCUC | OCRNL | ONOCR | ONLRET | OFILL); 
  newtios.c_cflag = CS8 | CLOCAL | CREAD;
  newtios.c_cc[VMIN]=1; /* block until 1 char received */
  newtios.c_cc[VTIME]=0; /*no inter-character timer */
  /* 115200 bps */
  cfsetospeed(&newtios,B115200);
  cfsetispeed(&newtios,B115200);
  /* register cleanup stuff */
  atexit(reset_tty_atexit);
  memset(&sa,0,sizeof sa);
  sa.sa_handler = reset_tty_handler;
  sigaction(SIGHUP,&sa,NULL);
  sigaction(SIGINT,&sa,NULL);
  sigaction(SIGPIPE,&sa,NULL);
  sigaction(SIGTERM,&sa,NULL);
  /*apply modified termios */
  saved_portfd=portfd;
  tcflush(portfd,TCIFLUSH);
  tcsetattr(portfd,TCSADRAIN,&newtios);
  return portfd;
}


void * process1(void* arg)
{
  int portfd = (int) arg;
  unsigned char i, j;
  int rev1, rev2;
  char RxBuffer[101];  


  rev1 =0;
  rev2 =0;


  while(rev2 < 100)
     {
    rev1 = write(portfd,(buff+rev2),100);
    rev2 += rev1;
     }


  printf("n uart1 send %d bytsn", rev2);


  rev1 = 0;
  rev2 = 0;


  while(rev2 < 100)
  {
    rev1 = read(portfd,(RxBuffer+rev2),100);
    rev2 += rev1;
  }

  printf("n uart1 receive %d bytesn", rev2);


  for(i = 0; i < 100; i++)
  {
    if(i != RxBuffer[i])
    {
      printf("n uart1 compare Error!!");

      while(1);
    }
  }


  printf("n uart1 compare correct!!n");
  printf("n uart1 test done!!n");


}  


void * process2(void* arg)
{
  int portfd = (int) arg;
  unsigned char i, j;
  int rev1, rev2;
  char RxBuffer[101];


  rev1 =0;
  rev2 =0;


  while(rev2 < 100)
     {
    rev1 = write(portfd,(buff+rev2),100);
    rev2 += rev1;
     }


  printf("n uart2 send %d bytes n", rev2);


  rev1 = 0;
  rev2 = 0;


  while(rev2 < 100)
  {
    rev1 = read(portfd,(RxBuffer+rev2),100);
    rev2 += rev1;
  }

  printf("n uart2 receive %d bytes n", rev2);


  for(i = 0; i < 100; i++)
  {
    if(i != RxBuffer[i])
    {
      printf("n uart2 compare Error!!");
      while(1);
    }
  }


  printf("n uart2 compare correct!!n");
  printf("n uart2 test done!!n");


}


/**
*@breif   main()
*/
int main(int argc, char **argv)
{
  char *dev[10]={"/dev/ttyS1", "/dev/ttyS2"};
  unsigned int i;


  printf("n demo uart1/uart2 external loop back function n");


  for(i = 0; i < 100; i++)
  {
    buff[i] = (i & 0xff);
  }




  for(i = 0; i < 2; i++)
  {
    if((fd[i] = open_port(dev[i]))< 0)
         return -1;
  }

  pthread_create(&threads[0], NULL, process1, (void*)(fd[0]));
  pthread_create(&threads[1], NULL, process2, (void*)(fd[1]));


  pthread_join(threads[0], NULL);
  pthread_join(threads[1], NULL);



  return 0;
}
  1. 再NUC970_Buildroot 執(zhí)行 make linux-menuconfig ,打開串口1和串口2的驅(qū)動(dòng)使能,保存后退出。

圖片

8.輸入 **make **編譯。

9.編譯完之后,拷貝相關(guān)文件,共四個(gè)文件

拷貝 NUC970_Buildroot/output/images 文件夾下的 **uImage **文件;

拷貝 NUC970_Buildroot/output/build/uboot-master 文件夾下的u-boot.bin 文件 ;

拷貝 NUC970_Buildroot/output/build/uboot-master/spl 文件夾下的u-boot-spl.bin 文件;

拷貝 NUC970_Buildroot 文件夾下的 env.txt 文件。這里在 NUC970_Buildroot 文件夾下 未發(fā)現(xiàn)env.txt,從別的地方拷貝一份即可。env.txt的內(nèi)容如下:

baudrate=115200
bootdelay=1
stderr=serial
stdin=serial
stdout=serial
setspi=sf probe 0 30000000
loadkernel=sf read 0x7fc0 0x200000 0x800000
bootcmd=run setspi;run loadkernel;bootm 0x7fc0

10.選擇boot啟動(dòng)方式,上電進(jìn)行鏡像下載,(參考: 新唐Nuc980學(xué)習(xí)筆記1 - 工程創(chuàng)建和下載

u-boot-spl.bin 選擇Loader默認(rèn)Image execute address:0x 200 ;下載即可

u-boot.bin 選擇 Data下載到 Image start offset: 0x 100000 ; 下載即可

uImage選擇Data下載到 Image start offset: 0x 200000 ; 下載即可

**env.txt **選擇 Environment下載到 Image start offset: 0x 80000 ; 下載即可

圖片

11.選擇boot啟動(dòng)方式,復(fù)位運(yùn)行(參考: 新唐Nuc980學(xué)習(xí)筆記1 - 工程創(chuàng)建和下載

12.開機(jī)之后的畫面如下:

圖片

13.輸入測(cè)試指令 ./usr/bin/uart_demo,可看到串口功能測(cè)試符合預(yù)期,測(cè)試結(jié)果如下:

圖片

注意:

【 以下動(dòng)作只需要在更新 Buildroot 工具時(shí)使用 】
進(jìn)入Buildroot 資料夾后請(qǐng)輸入以下指令:
git reset --hard
git pull
更新完成后進(jìn)入 dl 資料夾,先將既有的 linux kernel 與 u-boot 刪除,并輸入以下指令:
sudo rm -rf linux-master.tar.gz
輸入密碼 user,并輸入以下指令:
sudo rm -rf uboot-master.tar.gz
離開 dl 資料夾,進(jìn)入 Builroot 資料夾下 make clean。

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

    關(guān)注

    5092

    文章

    19177

    瀏覽量

    307674
  • 串口
    +關(guān)注

    關(guān)注

    14

    文章

    1557

    瀏覽量

    77042
  • Ubuntu
    +關(guān)注

    關(guān)注

    5

    文章

    566

    瀏覽量

    30033
  • 新唐
    +關(guān)注

    關(guān)注

    0

    文章

    133

    瀏覽量

    14289
  • nuc980
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    1292
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    nuc980雙網(wǎng)卡開機(jī)啟動(dòng)

    nuc980雙網(wǎng)卡開機(jī)啟動(dòng)
    的頭像 發(fā)表于 12-07 18:25 ?1548次閱讀
    <b class='flag-5'>nuc980</b>雙網(wǎng)卡開機(jī)啟動(dòng)

    NUC980怎么把Uboot和kernel的輸出改到其它串口?

    使用的NUC980官方固件 板子只引出了PA1和PA0 沒有把UART0引出 請(qǐng)問應(yīng)該怎么把Uboot和kernel的輸出改到其它串口
    發(fā)表于 01-17 06:52

    基于NUC980開發(fā)板DIY的項(xiàng)目合集

    。NUC980有非常豐富的外設(shè)資源,串口有10個(gè),可以擴(kuò)展出多個(gè)485接口,還有128M內(nèi)存,用于多任務(wù)運(yùn)行。DIY過程首先畫了一個(gè)板子:通過arduino接口擴(kuò)展了2個(gè)485和2個(gè)can,can與本次
    發(fā)表于 05-07 15:22

    NUC980IOT使用測(cè)評(píng)相關(guān)資料分享

    1、NUC980測(cè)評(píng)快速上手與GPIONUC980是新科技32位Cortex-A系列內(nèi)核產(chǎn)品,NUC980IOT所使用的芯片為NUC980DK61
    發(fā)表于 06-02 14:56

    NUC980開發(fā)板DIY項(xiàng)目大挑戰(zhàn)合集

    1、基于NUC980的4G、wifi、網(wǎng)的物聯(lián)網(wǎng)網(wǎng)關(guān)項(xiàng)目開發(fā)項(xiàng)目描述目前工業(yè)控制和工業(yè)現(xiàn)場(chǎng)的數(shù)據(jù)采集與遠(yuǎn)程控制多還是使用串口類接口進(jìn)行現(xiàn)場(chǎng)通信,而nuc980提供10個(gè)
    發(fā)表于 06-08 14:32

    求一種基于NUC980開發(fā)板的數(shù)據(jù)采集網(wǎng)關(guān)設(shè)計(jì)方案

    1、基于NUC980開發(fā)板的數(shù)據(jù)采集網(wǎng)關(guān)設(shè)計(jì)新NUC980系列MPU有高達(dá)300 MHz 的執(zhí)行速度和內(nèi)嵌最高 128 MB DRAM及豐富的周邊,現(xiàn)在又搭載上了RT-Thread OS以及
    發(fā)表于 06-13 18:08

    NUC980測(cè)評(píng)快速上手與GPIO

    ,首先介紹一下板子上的兩個(gè)端口,兩個(gè)microusb分別為NUWriter的下載與普通串口,所以基本上一根線就可以滿足譬如GPIO的測(cè)評(píng)。1.板載GPIO介紹NUC980是新科技3
    發(fā)表于 10-17 15:55

    請(qǐng)教nuc980如何實(shí)現(xiàn)在線升級(jí)

    請(qǐng)教,nuc980 如何實(shí)現(xiàn)在線升級(jí),是通過u-boot升級(jí)嗎,應(yīng)該怎么配置u-boot,升級(jí)包要放在哪里?第一次用nuc980,不會(huì)linux
    發(fā)表于 10-28 10:16

    請(qǐng)問nuc980如何在裸機(jī)程序中實(shí)現(xiàn)nuc980軟件復(fù)位?

    nuc980如何在裸機(jī)程序中實(shí)現(xiàn)nuc980軟件復(fù)位?
    發(fā)表于 06-13 08:21

    請(qǐng)問nuc980如何在裸機(jī)程序中實(shí)現(xiàn)nuc980軟件復(fù)位?

    nuc980如何在裸機(jī)程序中實(shí)現(xiàn)nuc980軟件復(fù)位?
    發(fā)表于 09-04 08:22

    科技NuMaker NUC980 主板介紹

    Linux 工業(yè)網(wǎng)絡(luò)控制開發(fā)平臺(tái) 新科技提供工業(yè)網(wǎng)絡(luò)控制開發(fā)平臺(tái)采用 NUC980DK61Y 微處理器,此為一套工業(yè)用網(wǎng)絡(luò)控制開發(fā)平臺(tái),完整的硬件設(shè)計(jì)與軟件參考設(shè)計(jì)。包含了新執(zhí)行速度300
    的頭像 發(fā)表于 01-13 10:13 ?9540次閱讀
    新<b class='flag-5'>唐</b>科技NuMaker <b class='flag-5'>NUC980</b> 主板介紹

    科技NUC980 工業(yè)控制物聯(lián)網(wǎng)系列介紹

    NUC980 系列采用 ARM926EJ-S 核心,執(zhí)行速度高達(dá) 300 MHz,堆棧 16 MB、64 MB 或 128 MB DDR-II 內(nèi)存于同一封裝,提供 64-pin、128-pin
    的頭像 發(fā)表于 02-05 09:17 ?4212次閱讀
    新<b class='flag-5'>唐</b>科技<b class='flag-5'>NUC980</b> 工業(yè)控制物聯(lián)網(wǎng)系列介紹

    NUC980規(guī)格書

    NUC980規(guī)格書(嵌入式開發(fā)工程師工資水平)-新科技ARM9 系列 NUC980產(chǎn)品手冊(cè)
    發(fā)表于 07-30 12:58 ?27次下載
    新<b class='flag-5'>唐</b><b class='flag-5'>NUC980</b>規(guī)格書

    NUC980 DIY項(xiàng)目大挑戰(zhàn) - EtherCAT實(shí)現(xiàn)

    ,就準(zhǔn)備上個(gè)RTOS,以前M3和M4的芯片,主要用FreeRTOS,最近也開始用RT-Thread。新官方也推出了NUC980的RT
    的頭像 發(fā)表于 02-02 11:30 ?2134次閱讀

    NUC980 Chili平臺(tái)可提供邊緣運(yùn)算(Edge Computing)遠(yuǎn)程監(jiān)控的管理解決方案

    NUC980 Chili平臺(tái)可提供邊緣運(yùn)算(Edge Computing)遠(yuǎn)程監(jiān)控的管理解決方案
    的頭像 發(fā)表于 08-10 11:00 ?690次閱讀
    新<b class='flag-5'>唐</b><b class='flag-5'>NUC980</b> Chili平臺(tái)可提供邊緣運(yùn)算(Edge Computing)遠(yuǎn)程監(jiān)控的管理解決方案
    主站蜘蛛池模板: 女人被狂躁视频网站免费 | 四虎中文| 一本视频在线 | 欧美日韩在线成人看片a | 国产一二三区在线 | 完全免费在线视频 | xxxxxhd69日本护士 | 综合伊人久久 | 手机在线看a | 奇米小说 | 天天弄天天干 | 视频在线免费观看 | 色综合久久中文字幕网 | 欧美性69 | 五月婷婷深爱五月 | 特一级毛片 | 天天做日日爱 | 操片免费 | yy肉戏多纯黄的小说 | 国产一区二区三区在线观看影院 | 天堂bt资源www在线 | 99久久无色码中文字幕 | 182tv免费视视频线路一二三 | 日本xxxx色视频在线观看 | 躁天天躁中文字幕在线 | 亚洲日本欧美日韩高观看 | 午夜伦y4480影院中文字幕 | 天天av天天翘天天综合网 | 亚欧美视频 | 欧美在线专区 | 搜索黄色毛片 | 真人实干一级毛片aa免费 | 欧美一级精品高清在线观看 | 极品国产一区二区三区 | 午夜久久久久久亚洲国产精品 | 亚洲福利秒拍一区二区 | 亚洲色图吧 | 免费看色视频 | 国产精品yy9299在线观看 | 欧美性aaa | 新版bt天堂资源在线 |