![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 65
慕诗客
这个作者很懒,什么都没留下…
展开
-
使用tftpd更新开发板内核
到这里文件已经下载完毕放在缓存里了,下一步就是写入存储介质里了,根据你的存储介质不同,可能会有不同的操作,我这里用的是emmc。接下来是开发板端的操作,上电后按CTRL+C打断启动,进入uboot,可以使用uboot指令,现在的uboot功能已经非常强大了,本次使用的uboot 2017.09支持tftp。我这里内存是8G,内核镜像256M,所以足够。文件夹路径放置你想要用于传输的文件,可以有多个文件,点击show dir可以看到里面的文件,我这里单独建立一个文件夹,只放了一个内核镜像。原创 2024-06-04 18:35:57 · 471 阅读 · 0 评论 -
Linux内核单独编译
现在的芯片功能越来越强大,功能也更加的丰富,为了推广自己的产品,一般芯片厂商都会提供一个包含Uboot,Kernel,Rootfs,以及芯片模块功能的SDK。但是,我们知道Linux内核中的配置项是特别多的,一项项去配置几乎是不可能的,不仅是因为参数功能不了解,而且也浪费时间。在配置好编译参数后就可以进行编译了,输入make后等待编译完成,会在对应arch的boot文件夹下生成镜像文件,输入make modules_install可以进行内核模块的安装。首先是内核源码的下载。原创 2024-02-07 22:19:08 · 506 阅读 · 2 评论 -
海思平台环境搭建并测试AI例程
先粘链接,本次测试所用的例程接下来记录环境搭建步骤。原创 2024-05-29 15:11:41 · 626 阅读 · 0 评论 -
从开发板导出根文件系统并修改(Ubuntu)
同步开发板根文件系统,usrname为开发板Ubuntu的用户名,可以是root也可以是普通用户名,boardip为开发板IP,意思就是将开发板/下的文件同步到ubuntu_rootfs文件夹中。首先我们得明白开发板里的根文件系统实际上就是一个包含各种文件的文件夹,我们也知道linux下的根目录是“/”,所以实际上就是将“/”下的所有文件导出即可。根文件系统导出有很多种方式,可以使用U盘本地导出,也可以使用网络远程导出,当然是网络更加的方便,这里就只描述网络导出的方式了。原创 2024-05-15 14:53:22 · 306 阅读 · 0 评论 -
VMware虚拟机没有网,无法设置网络为桥接状态
在网络设置里勾选的是桥接模式但无法联网,打开虚拟网络编辑器,发现没有VMnet0,自己新建一个也不行,提示没有未桥接的主机网络适配器。今天需要使用Ubuntu18但现有虚拟机是Ubuntu20,由于硬盘空间不够大,所以删除了原来的虚拟机并重新搭建Ubuntu18的环境,然后发现虚拟机没有网络,而我之前的虚拟机这一切都是正常的。接下来进任务管理器,把带黄色感叹号的VMnet1和VMnet8卸载掉,然后再进虚拟网络编辑器里还原默认设置,这时候就正常了,会多出VMnet0,虚拟机也可以上网了。原创 2024-05-14 14:18:00 · 351 阅读 · 0 评论 -
WSL介绍(Windows10内置的Linux子系统)
WSL的内核不是原生的,所以好像不能进行内核方面的开发,但是对于arm板的交叉编译应该是没什么问题的,可以按在虚拟机上操作的方式进行操作,不过暂时还没有测试,后续再说。在子linux里我们试了查看分区,可以看到跟常规的linux有些不一样,有一点比较好,可以通过/mnt/访问windows的不同盘,可以很方便的进行文件共享。安装好之后选择Debian图标打开,首次打开会提示输入用户名和密码,创建完毕就可以使用了,试了查询指令正常,也可以使用apt指令可以安装喜欢的各种软件。原创 2024-05-08 14:38:25 · 626 阅读 · 0 评论 -
Linux编译内核模块生成.KO驱动示例
以上只是个示例,如果是实际的驱动,比如点亮一个灯这种,那么我们需要将它做成一个字符设备,要做的内容包括跟具体硬件相关的引脚配置,时钟配置,引脚电平操作等。现在的Linux内核十分庞大,驱动繁多,但是仍有一些是内核所不包含的,或者我们前期进行了内核裁剪,但后面又需要添加一些驱动,但是又不想重新烧录内核,这时候就可以使用内核模块功能,对内核驱动进行动态的调整。这个时候其实还有问题,会提示找不到文件,因为我们的hello文件夹位置是自定义的,而头文件是使用的相对路径,所以找不到。,但该博客不够完善,特补充说明。原创 2024-05-06 11:25:38 · 620 阅读 · 0 评论 -
基于Ubuntu-base构建根文件系统
执行./mount.sh -m ubuntu_rootfs/指令后我们会发现终端字体变白了,而且是以root身份执行的,这表明我们已经进入了Ubuntu-base的文件系统了,可以用cat /etc/issue查看下系统版本,会发现跟你本机使用的Ubuntu是有差别的。Ubuntu是一个非常常见的发行版系统,具有丰富的软件功能,可以方便的进行各类开发,系统的apt工具更是搭建各种开发环境的神器。这时候发现报错了,因为此时的根文件系统没有网络功能,需要拷贝本机的resolv.conf文件到文件夹中。原创 2024-04-26 17:26:32 · 1589 阅读 · 0 评论 -
Ubuntu修改用户名及密码
有时候买了一块带Ubuntu的开发板,只在上面做应用开发,之后需要将整个系统重新打包成根文件系统用于生产批量烧录。但是,开发板出厂一般是有自己的用户名和密码的,我们需要定制修改成自己的用户名和密码。网上有很多种修改方法,但有时候修改完后会导致无法登录,所以做个总结。以上操作如果仍然有问题,推荐一个更简单的方式。以下是实测好用的方法,请按步骤操作。原创 2024-02-06 13:27:53 · 1438 阅读 · 0 评论 -
Linux设备树实现方式
一般的,.dtsi常用于描述SOC内部外设信息,由于这部分是固定的,一般会被具体的板级dts所引用,而在板级dts文件中,则会描述一些具体板级的外设信息。在设备树中,可以使用节点标签来便捷的访问节点,通过节点标签可以便捷的在新文件中完成节点的数据追加。在ARM架构下的设备树出现之前,Linux内核源码中使用了大量的文件来记录这些板级信息,而这些信息会被编译进Linux内核,导致内核“虚胖”。设备都是以节点形式挂在设备树上的,要获取这些设备属性,必须得获取到设备节点。下面来讲讲设备树的好处以及它的实现方式。原创 2024-02-05 22:04:52 · 514 阅读 · 0 评论 -
Linux驱动工作原理
首先列一张Linux下应用程序对驱动的调用图本次讨论内核是如何操作具体硬件的。从图中可知,内核是通过驱动程序中的open(),close()等函数去实现硬件操作的,单从这一点来看,似乎跟单片机通过库函数操作外设差不多。但是Linux内核不是为某一款芯片去设计的,它可以在许多芯片上运行,很明显,它不可能将每款芯片的具体操作函数都写进去,这样的话内核得爆炸。从软件设计层面上来说,分层是必不可少的,为此Linux有着自己的一套驱动框架,不同芯片只需要按它的驱动框架编写驱动就可以了。原创 2024-02-05 20:45:51 · 327 阅读 · 0 评论 -
linux下通过nfs挂载共享文件夹
这样,在Ubuntu主机端编译生成的可执行文件拷贝到/home/user/nfs_share文件夹后,在开发板的/home/nfs_mount目录里就可以找到,便于测试。在最后一行添加 /home/user/nfs_share *(rw,sync,no_subtree_check,no_root_squash)然后重启服务sudo /etc/init.d/nfs-kernel-server restart。创建一个用于共享的文件夹mkdir -p /home/user/nfs_share。原创 2024-01-29 19:16:22 · 249 阅读 · 0 评论 -
Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 16795
今天使用Ubuntu apt去下载时出现Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 16795异常,使用kill指令无效。原创 2024-02-04 16:37:18 · 1988 阅读 · 2 评论 -
Uboot使用tftp下载
在ubuntu服务器配置完毕后,执行uboot指令,结果出现了异常TFTP error: 'File not found' (1),其原因为/etc/xinetd.d/tftp配置文件不对,需要添加-c,以下为完整正确操作。然后配置/etc/default/tftpd-hpa,输入sudo vi /etc/default/tftpd-hpa。接下来配置/etc/xinetd.d/tftp,输入sudo vi /etc/xinetd.d/tftp。这时候在uboot中再次使用tftp指令就没问题了。原创 2024-02-05 11:03:17 · 509 阅读 · 0 评论