Jetson nano编译第一个驱动程序,挂载并运行

这篇具有很好参考价值的文章主要介绍了Jetson nano编译第一个驱动程序,挂载并运行。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


这篇文章主要记录自己在嵌入式Linux学习过程中的收获,以方便后续自己查看,这次记录的内容是我使用nano板加载了自己的第一个驱动程序,并且测试成功!下面是具体的步骤。

1. 交叉编译编译内核源码

什么是交叉编译?

所谓的交叉编译指的就是在一个CPU架构平台上,编译出另外一个CPU架构平台上可以执行的程序。交叉编译的好处在于可以提高内核源码编译的速度,交叉编译的原因在于嵌入式平台在设计过程中的性能和内存等硬件资源并没有特别好,因此需要使用性能更好的平台完成编译的任务,同时交叉编译使得我们不需要花时间将各种支持包移植到目标板上。

编写驱动,为啥要编译内核源码?

因为在设备驱动中,需要引用内核源码编译后的文件,因此需要先编译内核源码。

具体步骤:

1. 1 下载Jetson nano的源码包和交叉编译器

3231版本链接.
jetson nano驱动开发,linux,驱动开发
jetson nano驱动开发,linux,驱动开发
最后可以得到下面两个文件,对下面两个文件tar解压。
jetson nano驱动开发,linux,驱动开发

1.2 配置交叉编译环境

export PATH=/opt/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin/:$PATH
source ~/.bashrc
export LOCALVERSION=-tegra
export CROSS_COMPILE=aarch64-linux-gnu-

官方文档
jetson nano驱动开发,linux,驱动开发

1.3 编译内核源码

  1. 首先要到源码的目录当中:
/home/shaokun/Jetson/Linux_for_Tegra/source/public/kernel/kernel-4.9
  1. 配置.config文件
sudo  make ARCH=arm64 O=$TKOUT tegra_deconfig (tegra_deconfig不同的平台不一样,ARCH=arm64代表的就是目标平台是ARM64位的硬件平台)
  1. 编译内核
sudo make ARCH=arm64 O=$TKOUT -j4(j后面代表当前编译平台上CPU的数量)
  1. 等待十几分钟即可编译完成

此过程不仅会将内核编译完成,还会将设备树,设备驱动程序的都编译完成。

2. 装载/烧录编译好的文件

2.1 EMMC烧录

有一种emmc的烧录,思路就是通过跳线将nano板进入工厂模式,通过usb线,注意这个usb线质量要好,执行脚本就可以烧录了,详情参考:
https://blog.csdn.net/ldl371122/article/details/120860054?spm=1001.2014.3001.5502

2.2 装载内核到现有系统

装载就是将编译好的内核、设备树、模块与nano板正在使用的进行替换;

cp Image放入/boot中
cp 设备树dtb也放入/boot中
cp lib/modules 放入/lib中
Sync

重启系统即可发现系统正在使用最新编译成功后的内核,官方文档如下。
jetson nano驱动开发,linux,驱动开发

3. 交叉编译驱动程序

在Ubtudu计算机中输入: make ARCH=arm64,即可编译驱动程序,使用makefile文件中的指令,调用内核源码,最后生成驱动程序.ko的文件,同时可以在makefile中对上层应用的程序进行编译,生成可以执行的应用程序。

4. 装载设备驱动

Install xxx.ko进行装载设备驱动
装载完成之后,可以使用lsmod列出已经装载的设备驱动;

5. 上层应用调用驱动程序

./hello_drv_test

jetson nano驱动开发,linux,驱动开发
-w代表写入,后面跟写入的内容,-r代表读取

中间小插曲

执行 ./hello_drv_test 指令时显示没有找到,显示:command not found刚开始以为是环境变量的问题,搞了搞环境变量,把可执行文件的路径加入到环境变量中还是不行,最后发现是可执行文件的权限问题,在其他用户组中一开始没有可执行权限,加上可执行权限后,运行命令成功!
jetson nano驱动开发,linux,驱动开发

参考

https://blog.csdn.net/weixin_47024013/article/details/125646897
https://blog.51cto.com/u_15244533/2845337
https://blog.csdn.net/ldl371122/article/details/120864445?spm=1001.2014.3001.5502文章来源地址https://www.toymoban.com/news/detail-587681.html

到了这里,关于Jetson nano编译第一个驱动程序,挂载并运行的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Jetson Nano驱动机器人的左右两路电机

    基于Jetson Nano板子搭建一个无人车,少不了减速电机驱动轮子滚动,那如何驱动呢? 从Jetson.GPIO库文件来说,里面没有支持产生PWM的引脚,也就意味着Jetson nano没有硬件产生PWM的能力,所以我们不得不使用别的方法产生PWM完成驱动控制,而刚好STM8解决了这一问题并且节约了它

    2023年04月09日
    浏览(36)
  • 这个设备(服务)的驱动程序已被禁用。另一个驱动程序可以提供这个功能。(代码32)

    今天拿到一台笔记本,插上U盘没有反应,进【设备管理器】发现【USB大容量存储设备】有个黄色的叹号。   鼠标右键【USB大容量存储设备】打开属性查看信息,显示设状态“这个设备(服务)的驱动程序已被禁用。另一个驱动程序可以提供这个功能。(代码32)”   研究了

    2024年02月11日
    浏览(50)
  • jetson-nano编译qt5.15.2带opengl,xcb

    项目需求原因,需要编译高版本qt到jetson-nano板子,历经10天来回折腾,终于是成功了。期间历经交叉编译失败,然后转直接编译,然后尝试各种版本的坑,最后整理的方法异常简单,只需6小时左右即可流畅在板子上编译成功。文章最后有我编译好的qt-5.15.2版本链接。 友情提

    2023年04月09日
    浏览(47)
  • 手把手教你在ARM板上写一个驱动程序!

    摘要:搞嵌入式有两个方向,一个是嵌入式软件开发(MCU方向),另一个是嵌入式软件开发(Linux方向)。其中MCU方向基本是裸机开发和RTOS开发。而Linux开发方向又分为驱动开发和应用开发。其中应用开发相比于驱动开发来说简单一些,因为搞驱动你要和Linux内核打交道。而我们普

    2024年02月01日
    浏览(83)
  • 4.Linux下Cmake交叉编译Qt项目到Jetson Orin Nano(arm)

    由于3:Ubuntu上配置QT交叉编译环境并编译QT程序到Jetson Orin Nano(ARM)_月上林梢的博客-CSDN博客  这一篇文章只用手动配置,一直在点、点、点。比较 LOW,现在在Ubuntu上使用Cmake实现交叉编译QT程序到Jetson Orin Nano上。 提醒: 我的工作环境是 Visual Studio+QT+arm 由于 Ubuntu 下没有V

    2024年02月12日
    浏览(42)
  • 如何用go写一个基于事件驱动的SSE的程序

    SSE(Serversentevents)是浏览器向服务器发送请求并保持长连接的技术,服务器通过长连接将数据推送到浏览器。SSE通常用于实时更新网页内容或获得服务器推送的通知。 下面是实现一个基于事件驱动的SSE程序的步骤: 创建一个HTTP服务器。 注册一个路由处理程序,用于处理SSE请求

    2024年02月08日
    浏览(38)
  • 开发一个RISC-V上的操作系统(三)—— 串口驱动程序(UART)

    目录 文章传送门 一、什么是串口 二、本项目串口的FPGA实现 三、串口驱动程序的编写 四、上板测试 开发一个RISC-V上的操作系统(一)—— 环境搭建_riscv开发环境_Patarw_Li的博客-CSDN博客 开发一个RISC-V上的操作系统(二)—— 系统引导程序(Bootloader)_Patarw_Li的博客-CSDN博客

    2024年02月15日
    浏览(111)
  • 【嵌入式Linux内核驱动】04_Jetson nano GPIO应用 | 驱动开发 | 官方gpiolib、设备树与chip_driver

    0.暴露给应用层 应用 解决调试目录为空的问题 调试信息 1.最简读写文件(在/SYS下) 设备树 验证测试 编译文件 驱动 of_get_named_gpio_flags //获取设备树节点的属性 gpio_is_valid //判断是否合法 devm_gpio_request //申请使用gpio,并调用设置pinctrl device_create_file //根据设备树节点属性,创建

    2024年02月07日
    浏览(57)
  • Linux Server 20.04 Qt5.14.2配置Jetson Orin Nano Developer Kit 交叉编译环境

    最近公司给了我一块Jetson Orin Nano的板子,先刷了系统(1.Jetson Orin Nano Developer Kit系统刷机)又让我搭建交叉编译环境,所以有了下面的文章 1.1设备环境 1.1.1 Server: 1.1.2 Jetson Orin Nano : 1.2 Qt相关下载地址 1.2.1 Qt源码下载 Qt源码下载(最好下载tar.xz,tar格式可能在windows下编辑过,后期

    2024年02月12日
    浏览(45)
  • 【jetson nano】jetson nano环境配置+yolov5部署+tensorRT加速模型

    断断续续地前后花了一个多星期配置环境以及部署模型,期间也报了无数错误,参考了很多文档,求助了身边的朋友,因此尽可能详细的记录一下这个过程。 此处感谢Xnhyacinth在配置过程中对我的帮助哈哈哈꒰ঌ( ⌯’ \\\'⌯)໒꒱ 我主机上的环境是python3.9,cuda11.6 jetson nano环境

    2023年04月12日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包