搜索
bottom↓
回复: 34
打印 上一主题 下一主题

鼓起勇气学linux驱动,买了个milk-V DUOS高配,根本无法入门

[复制链接]

出0入0汤圆

跳转到指定楼层
1
发表于 2024-8-25 13:33:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
看官方“入门教程”,然后到配置环境编译好固件,就不知道怎么下一步,编译固件一个小时都没完。
看来这种便宜的开发板没办法入门linux驱动什么的。

连点流水灯都不知道怎么做。。。

大家有什么便宜的开发板能有附带教程一步一步学习的推荐?

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入22汤圆

2
发表于 2024-8-25 13:47:14 来自手机 | 只看该作者
我竟然是从zedboard的petalinux入门的?

出0入663汤圆

3
发表于 2024-8-25 14:15:05 | 只看该作者
都2024了还学什么linux驱动,直接主线内核走起,配一下device tree就完了。

出0入36汤圆

4
发表于 2024-8-25 15:06:53 来自手机 | 只看该作者
为什么要学搞驱动?不是搞业务程序才赚钱么?

出0入0汤圆

5
 楼主| 发表于 2024-8-25 15:35:18 | 只看该作者
gzhuli 发表于 2024-8-25 14:15
都2024了还学什么linux驱动,直接主线内核走起,配一下device tree就完了。
(引用自3楼)

其实我没任何方向,你说的内核走起,设备树是什么意思?怎么入门?

出590入1001汤圆

6
发表于 2024-8-25 15:48:25 | 只看该作者
我搞了一个几个XX派的相对便宜点的。,到现在都入门不了。
什么DOCKER环境,编译固件,研究了一两个月,完全看不懂。在什么论坛里面看资料,给的都是云里雾里,加qq群,里面几乎没人回答。
最后上:树莓派。但是研究时间不多,但是确实效果比xx派好。
最终还是机缘巧合遇到一个固件,最终把项目做出来。
感觉最好还是身边有用LINUX的人,这样耳濡目染能把一些基础的东西弄明白。
另外国产的派:最好买他们的主推型号去学。否则资料几乎没有。或者就丢一堆东西给你。0基础狠痛苦。

出0入0汤圆

7
发表于 2024-8-25 16:18:47 | 只看该作者
既然你都说流水灯了,就先从流水灯学起吧,先写个流水灯的程序。

出0入33汤圆

8
发表于 2024-8-25 16:22:29 来自手机 | 只看该作者
先不要上来就搞驱动,先学会用linux,多操作,多解决一些遇到的问题。

出0入12汤圆

9
发表于 2024-8-25 16:41:01 来自手机 | 只看该作者
用小主板的X86代替树莓派不更容易点,小x86主板有什么又便宜又大路的?

出100入312汤圆

10
发表于 2024-8-25 17:07:40 | 只看该作者
SUPER_CRJ 发表于 2024-8-25 15:48
我搞了一个几个XX派的相对便宜点的。,到现在都入门不了。
什么DOCKER环境,编译固件,研究了一两个月,完 ...
(引用自6楼)

大神是可以写驱动了么

出715入1076汤圆

11
发表于 2024-8-25 17:54:25 来自手机 | 只看该作者
SUPER_CRJ 发表于 2024-8-25 15:48
我搞了一个几个XX派的相对便宜点的。,到现在都入门不了。
什么DOCKER环境,编译固件,研究了一两个月,完 ...

(引用自6楼)

docker 是给不熟 linux 的用户用的,类似给你一个安装好各种环境的 virtualbox/vmware 虚拟机的镜象给你,你本地只要用虚拟机启动镜象就可以进入一个立即可用的环境。

然而,对于我来说,一直觉得 docker 有点脱裤子放 P 的感觉,我之前刚接触网页 wasm 的时候,要移植一个 imagemagick 到 wasm,github 找到一个参考移植,编译要用 docker 环境,我折腾了半天,各种出错。后来我把编译脚本里面的 docker 删掉,裸机直接编译,一下子就成功了。

我的结论是:熟 linux 的不须要 docker,不熟 linux 的用 docker 更懵 B。

至于服务器用 docker 可以做到部署方便我也不认可,我自己管理了多个服务器,全部用同一套系统就好了,没有部署兼容性问题。至于不同服务依赖某个软件包的不同版本也不是问题,gentoo 有 slot 机制可以同时安装多个版本。我自己一个 vps 本来想安装一个独立站系统,结果要求用 docker,上 docker 非常耗资源,结果是反而用不了。

出130入20汤圆

12
发表于 2024-8-25 23:23:05 | 只看该作者
gzhuli 发表于 2024-8-25 14:15
都2024了还学什么linux驱动,直接主线内核走起,配一下device tree就完了。
(引用自3楼)

确实,而且是拿原本就有的驱动或者原厂提供的驱动,修改一下

出0入663汤圆

13
发表于 2024-8-26 01:37:03 | 只看该作者
shuiluo2 发表于 2024-8-25 23:23
确实,而且是拿原本就有的驱动或者原厂提供的驱动,修改一下
(引用自12楼)

能在用户态跑的尽量在用户态实现,像SPI/I2C下面挂的各种外设基本上都可以在用户态通过ioctl操作,没必要去搞内核驱动。实在要搞驱动一般都用DKMS而不是直接改内核,这样不影响内核升级。

出0入0汤圆

14
 楼主| 发表于 2024-8-26 08:47:17 | 只看该作者
gzhuli 发表于 2024-8-26 01:37
能在用户态跑的尽量在用户态实现,像SPI/I2C下面挂的各种外设基本上都可以在用户态通过ioctl操作,没必要 ...
(引用自13楼)

那我换一个方向,直接从应用学起
有什么开发板便宜,多资料,有教程的吗?
现在手上的板连点流水灯都不知道如何入手。

出100入312汤圆

15
发表于 2024-8-26 08:51:48 | 只看该作者
contonuncle 发表于 2024-8-26 08:47
那我换一个方向,直接从应用学起
有什么开发板便宜,多资料,有教程的吗?
现在手上的板连点流水灯都不知 ...
(引用自14楼)

直接应用学,pc就行啊

出0入8汤圆

16
发表于 2024-8-26 09:17:59 | 只看该作者
contonuncle 发表于 2024-8-26 08:47
那我换一个方向,直接从应用学起
有什么开发板便宜,多资料,有教程的吗?
现在手上的板连点流水灯都不知 ...
(引用自14楼)

正点原子,韦东山 一大堆的开发板

嘉立创的开源,RK3568 泰山派也可以吧

不过我觉得学什么需要有项目驱动,不然没有目标,体验完吃灰的概率很大。

出0入0汤圆

17
发表于 2024-8-26 09:29:05 | 只看该作者
gzhuli 发表于 2024-8-26 01:37
能在用户态跑的尽量在用户态实现,像SPI/I2C下面挂的各种外设基本上都可以在用户态通过ioctl操作,没必要 ...
(引用自13楼)

大师,liunx下的那些操作命令需要看什么书能系统学下?之前都是KEIL和IAR这种IDE下操作,看见liunx的类dos命令行就感觉无从下手

出0入36汤圆

18
发表于 2024-8-26 10:25:48 来自手机 | 只看该作者
罗小蘑菇 发表于 2024-8-26 09:29
大师,liunx下的那些操作命令需要看什么书能系统学下?之前都是KEIL和IAR这种IDE下操作,看见liunx的类do ...
(引用自17楼)

不用系统学,用的啥看啥。建议先把shell的视频看看,shell就已经可以做很多事情了。

出0入0汤圆

19
发表于 2024-8-26 10:36:50 | 只看该作者
kv2004 发表于 2024-8-25 16:41
用小主板的X86代替树莓派不更容易点,小x86主板有什么又便宜又大路的?
(引用自9楼)

还是树莓派容易点,从下载系统镜像,烧录系统,官网都有配套的教程。如果非要在x86小主机上面试,那还不如装个虚拟机体验了。

出0入12汤圆

20
发表于 2024-8-26 11:56:59 来自手机 | 只看该作者
hyz_avr 发表于 2024-8-26 10:36
还是树莓派容易点,从下载系统镜像,烧录系统,官网都有配套的教程。如果非要在x86小主机上面试,那还不 ...
(引用自19楼)

我就看各种派玩起来不容易,编程环境不舒服。要命的还是我们的国家对我们各种封和锁怀疑,对我们背后插刀,应用的话,还是x86方便太多。

出0入0汤圆

21
发表于 2024-8-26 17:28:58 | 只看该作者
别一来就学驱动,也别去买什么开发板,大概率因为枯燥乏味就放弃了。从虚拟机开始,先熟悉命令行和gcc,能比较熟练编写运行程序了,再学交叉编译内核啥的,驱动到应该放到比较后面去学。  

出0入663汤圆

22
发表于 2024-8-26 18:00:55 | 只看该作者
浮华一生 发表于 2024-8-26 17:28
别一来就学驱动,也别去买什么开发板,大概率因为枯燥乏味就放弃了。从虚拟机开始,先熟悉命令行和gcc,能 ...
(引用自21楼)

我是搞不懂为啥那么多人要学linux驱动。有多少人买台电脑回来是为了折腾驱动开发的?

出0入0汤圆

23
发表于 2024-8-26 18:37:29 | 只看该作者
gzhuli 发表于 2024-8-26 18:00
我是搞不懂为啥那么多人要学linux驱动。有多少人买台电脑回来是为了折腾驱动开发的? ...
(引用自22楼)

可能是想提升自己吧,觉得搞嵌入式就是搞linux驱动。 实际上现在BSP大都是厂家做好了,自己能开发应用端,能裁剪裁剪内核,能玩转设备数,也差不多能做linux项目了。

出0入0汤圆

24
 楼主| 发表于 2024-8-26 20:02:41 | 只看该作者
redworlf007 发表于 2024-8-26 10:25
不用系统学,用的啥看啥。建议先把shell的视频看看,shell就已经可以做很多事情了。 ...
(引用自18楼)

之前看过了,可以通过脚本做一些东西,但是下一步呢,比如点流水灯或者串口,怎么做
我也知道可以用虚拟机,虚拟机之后就不知道怎么下一步了

出0入309汤圆

25
发表于 2024-8-29 07:00:29 | 只看该作者
dukelec 发表于 2024-8-25 17:54
docker 是给不熟 linux 的用户用的,类似给你一个安装好各种环境的 virtualbox/vmware 虚拟机的镜象给你 ...
(引用自11楼)

我觉得docker最大的价值是快速部署以及快速重建系统。

一次写好Dockerfile然后随便一台电脑直接装好docker后就能一行命令部署环境,节省很多时间。

另外就是不用担心搞崩系统,毕竟是虚拟环境,一旦搞崩大不了--force-recreate。系统直接回到初始状态。可比装真机快多了。

出100入312汤圆

26
发表于 2024-8-29 07:18:27 | 只看该作者
浮华一生 发表于 2024-8-26 18:37
可能是想提升自己吧,觉得搞嵌入式就是搞linux驱动。 实际上现在BSP大都是厂家做好了,自己能开发应用端 ...
(引用自23楼)

大厂是做好了,不过想换个型号,就要自己改了

出0入663汤圆

27
发表于 2024-8-29 11:04:04 | 只看该作者
本帖最后由 gzhuli 于 2024-8-29 11:07 编辑
contonuncle 发表于 2024-8-26 20:02
之前看过了,可以通过脚本做一些东西,但是下一步呢,比如点流水灯或者串口,怎么做
我也知道可以用虚拟 ...
(引用自24楼)


linux是不适合点流水灯的,大材小用不说,非实时系统定时精度不高,效果不如单片机好。当然也可以做,直接操作GPIO就行,甚至shell脚本都能做,没啥难度。

串口直接打开 /dev/ttyS* 就好了,让ChatGPT给了一个C例程你参考一下:
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <unistd.h>
  5. #include <fcntl.h>
  6. #include <termios.h>

  7. int main() {
  8.     int serial_port = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);

  9.     if (serial_port == -1) {
  10.         perror("Failed to open the serial port");
  11.         return 1;
  12.     }

  13.     // Configure serial port settings
  14.     struct termios tty;
  15.     memset(&tty, 0, sizeof(tty));

  16.     if (tcgetattr(serial_port, &tty) != 0) {
  17.         perror("Failed to get terminal attributes");
  18.         close(serial_port);
  19.         return 1;
  20.     }

  21.     cfsetispeed(&tty, B9600);  // Input baud rate
  22.     cfsetospeed(&tty, B9600);  // Output baud rate

  23.     tty.c_cflag |= (CLOCAL | CREAD);    // Enable the receiver and set local mode
  24.     tty.c_cflag &= ~CSIZE;              // Clear the character size mask
  25.     tty.c_cflag |= CS8;                 // 8 data bits
  26.     tty.c_cflag &= ~PARENB;             // No parity
  27.     tty.c_cflag &= ~CSTOPB;             // 1 stop bit
  28.     tty.c_cflag &= ~CRTSCTS;            // No hardware flow control

  29.     // Raw input mode (non-canonical, no echo)
  30.     tty.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);

  31.     // Raw output mode
  32.     tty.c_oflag &= ~OPOST;

  33.     // Set the new attributes
  34.     if (tcsetattr(serial_port, TCSANOW, &tty) != 0) {
  35.         perror("Failed to set terminal attributes");
  36.         close(serial_port);
  37.         return 1;
  38.     }

  39.     // Write to the serial port
  40.     char *msg = "Hello, Serial Port!\n";
  41.     int bytes_written = write(serial_port, msg, strlen(msg));

  42.     if (bytes_written < 0) {
  43.         perror("Failed to write to the serial port");
  44.         close(serial_port);
  45.         return 1;
  46.     }

  47.     // Read from the serial port
  48.     char read_buf[256];
  49.     memset(read_buf, '\0', sizeof(read_buf));
  50.     int bytes_read = read(serial_port, read_buf, sizeof(read_buf));

  51.     if (bytes_read < 0) {
  52.         perror("Failed to read from the serial port");
  53.         close(serial_port);
  54.         return 1;
  55.     }

  56.     printf("Read %d bytes: %s\n", bytes_read, read_buf);

  57.     // Close the serial port
  58.     close(serial_port);

  59.     return 0;
  60. }
复制代码


记住linux是一个操作系统,不要总是抱着单片机裸奔的习惯性思维,要在应用开发层面考虑问题。

出0入0汤圆

28
发表于 2024-8-29 14:43:17 | 只看该作者
akey3000 发表于 2024-8-29 07:18
大厂是做好了,不过想换个型号,就要自己改了
(引用自26楼)

学东西本就讲究个循序渐进,用都用不明白的情况,上来就干内核裁剪,这...

出0入0汤圆

29
发表于 2024-8-29 15:43:08 | 只看该作者
gzhuli 发表于 2024-8-26 18:00
我是搞不懂为啥那么多人要学linux驱动。有多少人买台电脑回来是为了折腾驱动开发的? ...
(引用自22楼)


要学liunx驱动的都是从单片机过来的人,单片机资源太少满足不了需求了,比如有网口,USB、触摸屏等应用,才要上liunx,而这个时候现成的liunx开发板又满足不了要求,需要自己做板子,所以要学liunx驱动。
而大多真正搞liunx的人,都是不考虑硬件层面的东西,直接搞应用,甚至连原理图都不看,所以根本不是一类人,考虑问题的角度也不一样。

出0入663汤圆

30
发表于 2024-8-29 15:45:29 | 只看该作者
罗小蘑菇 发表于 2024-8-29 15:43
要学liunx驱动的都是从单片机过来的人,单片机资源太少满足不了需求了,比如有网口,USB、触摸屏等应用, ...
(引用自29楼)

自己做板子为啥要搞驱动?

出0入328汤圆

31
发表于 2024-8-29 16:02:57 来自手机 | 只看该作者
gzhuli 发表于 2024-8-29 15:45
自己做板子为啥要搞驱动?
(引用自30楼)

+1,估计90%以上的情况改改dts就可以

出0入0汤圆

32
发表于 2024-8-29 16:41:25 | 只看该作者
gzhuli 发表于 2024-8-29 15:45
自己做板子为啥要搞驱动?
(引用自30楼)

要增加器件啊,管脚也可能调整啊

出0入663汤圆

33
发表于 2024-8-29 17:33:53 | 只看该作者
罗小蘑菇 发表于 2024-8-29 16:41
要增加器件啊,管脚也可能调整啊
(引用自32楼)

Device Tree Overlay了解一下,内核支持的硬件直接配dtbo就好了,内核不支持的再看什么硬件,如果是挂在SPI/I2C下面的可以在用户态操作,95%情况不需要写驱动。

出0入0汤圆

34
发表于 2024-8-29 17:44:12 | 只看该作者
gzhuli 发表于 2024-8-29 17:33
Device Tree Overlay了解一下,内核支持的硬件直接配dtbo就好了,内核不支持的再看什么硬件,如果是挂在S ...
(引用自33楼)

学到了,谢谢大师

出0入0汤圆

35
发表于 2024-8-29 17:47:50 | 只看该作者

现在搞Linux 那都是设备树工程师就行了,驱动基本主线或原厂都给你写了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 05:53

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表