ZCU106 裸机NR SHELL移植

许久没更了,画了一个月的板子,终于初版画完了,剩下的和师兄对一下接口、然后细节问题就可以投板了,接下来就继续我的裸机VCU了~
裸机(用RTOS了其实)没有shell的情况就感觉很别扭,每次下程序又比较麻烦,所以这里便用一个shell去控制,网上有开源了的,所以这里移植一个在我的ZCU106板子上方便后续开发
源码github:https://codeload.github.com/Nrusher/nr_micro_shell/zip/master
开源的魅力就在于不必再去重复造轮子~哈哈

添加源码到自己的工程下

inc是头、src目录是c文件位置、nr_xxx_commands.c用于添加自己的指令、shell_thread.c是我们的shell线程,这里优先级给最低

此外直接之一会报错因为##拼接符号在gcc下面会认为不安全,所以改成

#define NR_ANSI_CLR_R_MV_L_NCHAR(cmd) ((const char *)"\033["## #cmd##"P")
修改后:
#define NR_ANSI_CLR_R_MV_L_NCHAR_M(cmd) ((const char *)"\033[1P")

然后将shell_printf修改成自己的xil_printf:

/* If you use RTOS, you may need to do some special processing for printf(). */
#define shell_printf(fmt, args...) xil_printf(fmt, ##args)
#define ansi_show_char(x) outbyte(x)

此外修改名字、配置都在shell_config.h下修改:

/* ANSI command line buffer size. */
#define NR_ANSI_LINE_SIZE 100/* Maximum user name length. */
#define NR_SHELL_USER_NAME_MAX_LENGTH 30/* Maximum command name length. */
#define NR_SHELL_CMD_NAME_MAX_LENGTH 10/* Command line buffer size. */
#define NR_SHELL_CMD_LINE_MAX_LENGTH NR_ANSI_LINE_SIZE/* The maximum number of parameters in the command. */
#define NR_SHELL_CMD_PARAS_MAX_NUM 10/* Command stores the most history commands (the maximum number here refers to the maximum number of commands that can be stored. When the history command line cache is full, it will automatically release the earliest command record) */
#define NR_SHELL_MAX_CMD_HISTORY_NUM 3/* History command cache length */
#define NR_SHELL_CMD_HISTORY_BUF_LENGTH 253/* The user's name. */
#define NR_SHELL_USER_NAME "nr@root:"/*
0: \n
1: \r
2: \r\n
*/
#define NR_SHELL_END_OF_LINE 1

这里的shell end of line根据自己用的软件回车发送的是啥来修改,我是只有\r所以1
这里的shell_tread在freeRtos下运行,代码如下:

static char nr_shell_getchar(void)
{char ch = 0;if(xSemaphoreTake(shell_semaphore, SH_WAIT_MAX_TIME)){ch = recv_buf[0];}return ch;
}void nr_shell_thread_entry(void *parameter)
{char ch;shell_semaphore= xSemaphoreCreateBinary();if(shell_semaphore== NULL) {printf("ERR Cretae Shell Sem!\n");vTaskDelete(NULL);}shell_init();open_stdio_uart();while (1){ch = nr_shell_getchar();shell(ch);}
}

上面的open_uart是我们自己的配置uart的函数,主要配置中断等,这里注意把fifo阈值修改为1:

 XUartPs_SetFifoThreshold(uart_inst_ptr, 1);

然后开机打印:

END

继续搬砖了

ZCU106 裸机NR SHELL移植相关推荐

  1. 腾讯 tiny os shell移植

    默认你已经调通tos,如果没有请移步官网 准备好要移植的文件 需要把shell文件夹下c和h文件加入到工程中(不会的请自行搜索) 因为是需要串口进行接收,需要用过平台调用st的库 调用 调用 shel ...

  2. 【zcu106】zcu106裸机Hello_world调试运行

    一.前言 手边有块xilinx的zcu106开发板,使用Vivado2019.1 + SDK2019.1进行裸机开发时,发现上板Debug时会卡住: 新建了一个只例化MPSoC的Vivado工程,用S ...

  3. letter-shell | 一个功能强大的嵌入式shell

    嵌入式开源项目精选专栏 本专栏由Mculover666创建,主要内容为寻找嵌入式领域内的优质开源项目,一是帮助开发者使用开源项目实现更多的功能,二是通过这些开源项目,学习大佬的代码及背后的实现思想,提 ...

  4. 从0开始写出一个最简单的shell(基于x210)

    文章目录 前言 一.什么是shell? 1.shell是什么鬼 2.程序或操作系统的用户接口 3.两种shell:GUI和cmdline 4.shell的运行原理:由消息接收.解析.执行构成的死循环 ...

  5. 《嵌入式 - 开源项目》一个小而美的嵌入式shell - letter shell

    源码地址 1 Letter shell简介 熟悉Linux的朋友的都知道,shell包裹在内核之外的人机交互界面,用于用户和内核之间打交道的功能,类似于windows CMD. 通过Shell将输入的 ...

  6. 《16.shell原理和问答机制引入》

    转自 https://edu.csdn.net/lecturer/505 朱老师物联网大讲堂 <16.shell原理和问答机制引入> 第一部分.章节目录 1.16.1.shell是什么鬼 ...

  7. 基于MDK开发的TencentOS-Tiny软件包,快速移植物联网操作系统到Keil中!

    基于MDK开发的TencentOS-Tiny Software Pack 2021腾讯犀牛鸟开源人才培养计划 2021/9/24 项目导师:TencentOS tiny核心架构师 汪礼超 项目学员:东 ...

  8. stm32F103zexx(战舰v1) 移植liteOS

    刚换了工作,最近接触了一个项目,使用的是stm32低功耗系列,系统是华为的物联网 liteOS操作系统,框架为touchGFX ui框架; 由于之前接触底层较多因此就想自己移植一个liteos 以及t ...

  9. HC32F460开发之rtthread+finsh组件的移植

    文章目录 前言 一.RT-Thread简介 二.rtthread的移植 1.裸机例程 2.RT-Thread下载 3.RT-Thread移植 4.finsh组件移植 总结 前言 对于从事单片机的开发人 ...

最新文章

  1. MPLSOAM技术及应用
  2. excel表格从某个标志计算机,让Excel也玩多标签 多个图表一个窗口 -电脑资料
  3. ThinkpadT470接通电源开机显示电量0%充不进电且电源指示灯不亮的解决办法
  4. R.java文件无法自动生成的问题
  5. winform适应不同的分辨率_C# Winform的自适应分辨率的类-阿里云开发者社区
  6. 三菱伺服电机选型技巧
  7. 公司项目JAVA开发规范总结(七)——编程规范
  8. (一)外显子组数据分析之软件安装大全
  9. android 自定义 对号,超简单实现Android自定义Toast
  10. Enovia add xxx.mql模板
  11. unity 四元数旋转各元素值的计算方法
  12. 链接、图像、列表、计数器
  13. 学计算机专业的打字要快么,怎样学电脑打字最快电脑新手如何快速学会打字
  14. python人工智能计算器_python游戏dnf_招募:基于python的召唤师全时段全技能(含均值AI)计算器全程测试......
  15. 生成微信小程序指定页面二维码
  16. cocoapods的缺点
  17. 新浪微博客户端(12)-判断当前软件是否是新版本(是否显示新特性)
  18. React canvas 抽奖转盘
  19. 梅科尔工作室-DjangoWeb 应用框架+MySQL数据库第五次培训
  20. BAT脚本的字符串处理

热门文章

  1. ipadpro如何分屏_不再泡面!大学生如何用iPad高效学习
  2. 梳理PSS和SSS的位置
  3. c语言p215答案,卫生统计学综合测试卷二及答案
  4. 气象雷达地物杂波产生的原因
  5. 变电站气象站(电力微气象监测站)是什么?
  6. 论文笔记 | Determinants of Cross-Border Mergers and Acquisitions
  7. Jess在Eclipse中的安装
  8. ABRT 已检测到 ‘1‘ 个问题。预了解详细信息请执行:abrt-cli list --since 1641347561
  9. Centos 6.9 Install dubbokeeper
  10. 滴滴Logi-KafkaManage安装手册