矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 16668|回复: 90

30岁自学linux嵌入式能行吗?

[复制链接]
     
发表于 2019-1-9 18:05:38 | 显示全部楼层 |阅读模式
本帖最后由 yjmwxwx 于 2019-1-9 18:15 编辑

以前自学的单片机,但是单片机需要买很多硬件实践,还需要有物理和数学知识才能搞好,我小学文化这些知识都很匮乏。
还有硬件投入比较大,要做个东西要花很多钱,于是打算转偏软件的linux嵌入式。

今年夏天那会买的imx6ull的板子加上jlink V9不到200元
IMG_20181128_170242.jpg.thumb.jpg

前段时间看过手册和裸机程序,感觉比较复杂于是打算先学学linux内核调度和驱动这块。

这板子和单片机烧录方式不太一样,内核文件是lzo压缩的,用MfgTool2软件下载到板子上,官方也没说到底烧录进去解压到哪个地址了。于是读出0x80000000内存里面的东西反汇编和内核反汇编比对,发现内核就在0x80000000。

知道了内核地址插上jlink调试内核,没想到运行内核后自动断开jlink的连接,于是网上搜下,国内没搜到又去国外搜,找到了一个解决办法,他那个是C语言的要重新编译,感觉太麻烦于是直接用LZO解压zImage,先要把LZO前面的代码去掉才能解压,修改完机器码后重新用同样的压缩参数打包再 和前面去掉部分合并,重新烧录结果LED不闪烁了,可能系统没启动。

还得用没修改过的调试,由于不懂LINUX的数据结构和调度原理于是先在上下文切换_switch_to设个断点,通过土法找到了LED开关和关闭JLINK连接的地方,根本不是老外说的那个地方。

截图_2019-01-09_04-08-19 (复制 1).png

截图_2019-01-09_11-15-13.png

led.png

dddd.png


知道哪里操作的硬件就好设断点了,发现这两个函数很多程序用,不能随便改掉,必须要找根源,要找根源估计还得学驱动,要是问别人很快解决就失去了学习的机会,打算再学学,不知道啥时候能学会。
     
发表于 2019-1-9 19:36:52 | 显示全部楼层
30岁,你就觉得老了?那就不要学了!矿坛都是一大帮老头,都在忙着学习呢!

评分

1

查看全部评分

回复 支持 3 反对 0

使用道具 举报

     
发表于 2019-1-9 18:18:34 | 显示全部楼层
当你提问的时候我已经开始学了

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2019-1-9 18:21:35 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
发表于 2019-1-9 19:51:13 | 显示全部楼层
江民38岁才开始研究杀毒软件,2年后成为中国最牛杀毒软件专家,永远不要说自己老了,只要想做用心做一定能做好,只不过是时间长短而已

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-1-9 23:54:34 | 显示全部楼层
其实时间都荒废了,这个板子买了半年多了,最近才开始研究。

刚才又调试了下,控制IO开关,LINUX把硬件寄存器地址变成别的了,硬件真地址不在内核里,网上搜了下说是什么设备树。。

不懂具体在处理器上是什么结构,比如GPIO5硬件真地址是0x20ac000 ,linux里面操作的是0x90850000


板子原理图,led在TAMPER4
1.png

TAMPER是GPIO5

2.png


GPIO5 基地址 0X20AC000
3.png

4.png


向0X90850000分别写0X10和0可以控制LED开关
5.png


前些日子写过个裸机控制这个IO的测试程序

  1.         .syntax unified
  2.         .arch armv7-a
  3.         .align 2
  4.         .text
  5. _xiangliangbiao:
  6.         ldr     pc, = reset                         @Reset_Handler      
  7.         ldr     pc, = undefined                        @Undefined_Handler     
  8.         ldr     pc, = svc                        @SVC_Handler           
  9.         ldr     pc, = prefabort                        @PrefAbort_Handler      
  10.         ldr     pc, = dataabort                        @DataAbort_Handler     
  11.         .word   0                           
  12.         ldr     pc, = irq                        @IRQ_Handler           
  13.         ldr     pc, = fiq                        @FIQ_Handler
  14.         .ltorg
  15. reset:
  16. _gpio5_4kai:       
  17.         ldr r2, = 0x1fffff              @延时数
  18.         ldr r0, = 0x20ac000              @GPIO5_DR基地址
  19.         mov r1, # 0x10                @io4
  20.         str r1, [r0, # 0x04]        @io4配置为输出
  21.         str r1, [r0]                       @io4开
  22. _gpio5_4kaiyanshi:                       @io4开延时
  23.         subs r2, r2, # 1               @延时数减1
  24.         bne _gpio5_4kaiyanshi        @没减到0就循环减
  25.         ldr r2, = 0x1fffff               @延时数
  26. _gpio5_4guan:                        @io4关
  27.         mov r1, # 0                       @0关
  28.         str r1, [r0]                        @写入GPIO5_DR io关
  29. _gpio5_4guanyanshi:                        @io4关延时
  30.         subs r2, r2, # 1                @延时数减1
  31.         bne _gpio5_4guanyanshi        @没减到0就循环减
  32.         b _gpio5_4kai                @跳回IO开
  33. undefined:
  34. svc:
  35. prefabort:
  36. dataabort:
  37. irq:
  38. fiq:
  39.         b reset
  40.         .end
复制代码


回复 支持 反对

使用道具 举报

     
发表于 2019-1-25 20:24:10 | 显示全部楼层
楼主加油,什么时候学不重要,关键是努力认真的学,技多不压身

评分

2

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2019-1-25 20:30:59 | 显示全部楼层
先学习C语言,然后学编写驱动程序,然后学习QT,内核别看了,做研发20几年了,从来没看那个内核。汇编语言也别用了。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2019-1-26 14:24:33 | 显示全部楼层
马 克思五十多岁才开始学习外语,所以楼主很年轻,等二十年后再学也可以。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2019-1-27 16:58:16 来自手机 | 显示全部楼层
单片机硬件不贵啊,买个常用的STM32F103C8T6.最小系统板也就十元左右,再买一个ST-LlNk下载调试器也就十多元,二十元刚出头就可以玩了。其他的LED,LCD也不贵,有几十元就足够做普通的实验了。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-1-27 17:44:23 | 显示全部楼层
本帖最后由 yjmwxwx 于 2019-1-27 17:49 编辑
hujj 发表于 2019-1-27 16:58
单片机硬件不贵啊,买个常用的STM32F103C8T6.最小系统板也就十元左右,再买一个ST-LlNk下载调试器也就十多 ...



光单片机不贵,但是要做东西需要买别的零件,比如要学电机控制要买驱动芯片和开关管,全桥就要六个开关管,在线调试程序最好电脑和调试器还要有隔离,学过好几次电机驱动都失败了,光驱简单BLDC第一年学的时候就转起来了,自己三极管搭的电路,后来搞SPWM的没成功,可能驱动电路开关速度不行,我每年大概要花600元玩电子,一直没砸钱买H桥驱动和开关管,我虽然有个论坛150买的示波器但是没表笔,没办法测高频方波。

后来感觉搞硬件砸钱太多,加上学习软硬件最好其中一个是成熟的东西,要不然软硬件不知道到底是哪里出的问题,要是有一个可以成熟的硬件再做软件就容易,由于是第一次做电机驱动根本没经验,再加上硬件平台没砸钱搞软件也就没办法做了,难度有点大于是没继续下去。

我搞摩托电点火器也是因为没测试设备,直接装到摩托上调试根本不现实,第一次搞没经验再加上没必要的设备所以也失败了,发现做一个东西光会电子和程序也不行,还要做机械结构的东西,比如做个点火测试平台,要有合适的调速电机还要有个标记角度圆盘,这个东西还要装到 一个稳定的支架上,不会电焊没电焊和角铁什么很难搞,总之只搞一样比较容易,要是机电程一块都要搞就不容易成功了,不砸很多钱搞不了。

今年有段时间看我们这有个厂子好像要研发光谱仪,我到网上找了很多资料,但是看了看衍射光栅的价格放弃了。
回复 支持 反对

使用道具 举报

     
发表于 2019-1-27 18:01:11 | 显示全部楼层
我37岁才有机会接触计算机,结果这碗饭一直吃到退休。 没什么学不会的,您才是个小伙子,有什么好担心的。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2019-1-27 18:11:32 | 显示全部楼层
longshort 发表于 2019-1-27 18:01
我37岁才有机会接触计算机,结果这碗饭一直吃到退休。 没什么学不会的,您才是个小伙子,有什么好担心 ...


学习前辈了

我现在打算先学软件,软件只要有个硬件平台写程序调程序除了电费没什么成本,那个内核没多少人学我就偏要先从内核开始学。
回复 支持 反对

使用道具 举报

     
发表于 2019-1-27 19:44:46 | 显示全部楼层
    每年600元左右,折合每天不到2元,对正常生活应该不会有太大的影响。做实验与搞研发是两个不同的概念:实验基本上是重复他人的过程,从中获得知识或技巧。研发则大部分是无太多的借鉴,其中免不了要走弯路,花费大也在情理之中。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2019-1-28 06:25:17 | 显示全部楼层
yjmwxwx 发表于 2019-1-27 18:11
学习前辈了

我现在打算先学软件,软件只要有个硬件平台写程序调程序除了电费没什么成本,那个内核没 ...

内核是个很好的切入点,它会让您的视野和别人的完全不一样。知道了内核是怎么干活的,您在网上几乎可以成为“透视眼”。

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-27 03:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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