OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5513|回复: 25

ARM裸奔的话程序是不是和51差不多

[复制链接]

349

主题

519

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1623
金钱
1623
注册时间
2014-7-11
在线时间
285 小时
发表于 2017-9-21 13:52:46 | 显示全部楼层 |阅读模式
2金钱
ARM裸奔的话程序是不是和51差不多

最佳答案

查看完整内容[请看2#楼]

操作方法差不多,不过复杂程度差很多。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2017-9-21 13:52:47 | 显示全部楼层
操作方法差不多,不过复杂程度差很多。
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8017
金钱
8017
注册时间
2014-8-13
在线时间
1594 小时
发表于 2017-9-21 14:49:43 | 显示全部楼层
寄存器编程的话,基本二者区别不大,只是寄存器数量功能不一样。库函数编程其实是官方给出的对寄存器操作的封装(以前是标准库,现在是HAL库),调试跟踪到底的话,还是寄存器操作。另外,不裸奔的话,也不过是在某个操作系统上运行各种硬件的驱动,多了某些操作系统自己的机制(同步、优先级、调配之类)
回复

使用道具 举报

7

主题

333

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1838
金钱
1838
注册时间
2012-7-16
在线时间
504 小时
发表于 2017-9-21 15:14:15 | 显示全部楼层
差很多,不是一个量级的东西,51寄存器太少了。
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8017
金钱
8017
注册时间
2014-8-13
在线时间
1594 小时
发表于 2017-9-21 16:41:49 | 显示全部楼层
hyghyg1234 发表于 2017-9-21 15:14
差很多,不是一个量级的东西,51寄存器太少了。

让你拼写个good,你能写出来,让你拼写个congratulations你就觉得有压力了吗?说来说去还是26个字母不是?
回复

使用道具 举报

头像被屏蔽

12

主题

167

帖子

0

精华

禁止访问

积分
517
金钱
517
注册时间
2017-5-30
在线时间
110 小时
发表于 2017-9-21 16:53:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复

使用道具 举报

7

主题

333

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1838
金钱
1838
注册时间
2012-7-16
在线时间
504 小时
发表于 2017-9-21 17:14:26 | 显示全部楼层
mack13013 发表于 2017-9-21 16:41
让你拼写个good,你能写出来,让你拼写个congratulations你就觉得有压力了吗?说来说去还是26个字母不是 ...

你这个类比不正确,首先51定时器太简单很多高级功能没有,很多外设51根本不具备,如果硬说差不多那估计是写个流水灯。
回复

使用道具 举报

7

主题

333

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1838
金钱
1838
注册时间
2012-7-16
在线时间
504 小时
发表于 2017-9-21 17:15:25 | 显示全部楼层
mack13013 发表于 2017-9-21 16:41
让你拼写个good,你能写出来,让你拼写个congratulations你就觉得有压力了吗?说来说去还是26个字母不是 ...

如果arm的门槛和51差不多,51早就灭亡了,51现在还能生存的最大原因就是学习成本低。
回复

使用道具 举报

16

主题

339

帖子

0

精华

高级会员

Rank: 4

积分
849
金钱
849
注册时间
2017-6-18
在线时间
166 小时
发表于 2017-9-21 18:04:10 来自手机 | 显示全部楼层
mack13013 发表于 2017-9-21 16:41
让你拼写个good,你能写出来,让你拼写个congratulations你就觉得有压力了吗?说来说去还是26个字母不是 ...

难的不是寄存器,是各种无哩头的功能。这么说能修个玩具,是不是托个飞机过来也能修得好。操作寄存器,不仅仅是玩个流水灯而已。
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2017-9-21 22:51:01 | 显示全部楼层
1、裸奔,两者差不多
2、不过ARM的外设功能的确多,不比51,就辣么少的外设,STC最近弄的貌似多了几个外设功能,也强不到那里去
3、无论使用的是标准库还是HAL库,都是对寄存器操作的封装
4、使用寄存器操作的话,每次都得翻手册,这个是真的,使用标准库或者HAL库也有麻烦的时候,看遇到什么问题了,具体问题具体分析
5、上OS的话,编程上可以更好的模块化,一个功能就是一个任务(功能不多),这样进行功能裁剪就比较简单了,查找问题也相对容易,OS也提供了很多任务通讯之类的API,使用起来也容易
6、裸奔,当然是功能不是很复杂的,功能与功能之间相对单一,这样裸奔压力不大
7、遇上ST这样的坑爹货,相对来说RAM和FLASH可以让你任意挥霍
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8017
金钱
8017
注册时间
2014-8-13
在线时间
1594 小时
发表于 2017-9-22 00:47:21 | 显示全部楼层
NULLFF 发表于 2017-9-21 16:53
差不多,但是基本上每次你都得翻手册,那么多寄存器,想背熟,那才叫爽。

为什么要背熟??福尔摩斯说过:大脑容量是有限的。

还有一位前辈说过,搞开发,懂原理,不要去记住细节。

大概的意思就是说,如果你想要启动定时器,你知道去数据手册查找对应的寄存器就可以了,没必要把哪个寄存器哪个位记得清清楚楚,数据手册不过是个字典。

再比如你想在通讯的时候不那么占用CPU时间,那么你知道有“可能”实现这个功能的大概有中断或者DMA,那么你去查字典(数据手册)就可以了,没必要把中断或者DMA的配置需要怎样改写某个寄存器都记的详详细细。

回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8017
金钱
8017
注册时间
2014-8-13
在线时间
1594 小时
发表于 2017-9-22 01:00:47 | 显示全部楼层
hyghyg1234 发表于 2017-9-21 17:14
你这个类比不正确,首先51定时器太简单很多高级功能没有,很多外设51根本不具备,如果硬说差不多那估计是 ...

STM32的定时器的确比51复杂了很多,但是说到底是不是还是操作某个寄存器(地址)?

多出来的功能51难道能躲的过去吗?

比如你要实现某个复杂功能(带死区的什么占空比可调频率可调PWM输出带捕获什么的,乱讲的,可能不存在,大体意思就是功能非常复杂的定时器),可能用STM32查一下数据手册,操作几个寄存器就完成了。

如果用51,估计得用外围芯片,51又要远程(并口或者串口之类)指定外围芯片地址,又要远程写数据,最后一番折腾,比STM32要复杂的多。


问题是,解决同样的问题,STM32可能比51容易太多。这时候,STM32反而比51学的还容易,不是吗?  至于高级定时器,或许有人把他归为STM32要学的部分,但是我认为那是外设部分,51之所以看起来比STM32容易,仅仅是因为51可以学很少的外设,然后就可以对外声称会51开发。


假如说,STM32仅学习51有的功能,其他功能不管的话,STM32并不比51难。
又有人说了,STM32仅学习51有的功能,那我学51不就完了吗?还学STM32干嘛?
问题是,大家学习51单片机的时候仅仅学习89S52这一个芯片吗?  51单片机开发板上那一大堆的外设是不是都要学?你学51,然后再学习51开发板上那一大堆外设,所花费的时间精力,用来学习STM32的话,是不是绰绰有余?
回复

使用道具 举报

16

主题

339

帖子

0

精华

高级会员

Rank: 4

积分
849
金钱
849
注册时间
2017-6-18
在线时间
166 小时
发表于 2017-9-22 01:18:07 来自手机 | 显示全部楼层
mack13013 发表于 2017-9-22 01:00
STM32的定时器的确比51复杂了很多,但是说到底是不是还是操作某个寄存器(地址)?

多出来的功能51难 ...

stm32的定时器,基本上不是用来定时的,ARM更不一样,怎么学习51的功能,首先根本就不是一个主
回复

使用道具 举报

16

主题

339

帖子

0

精华

高级会员

Rank: 4

积分
849
金钱
849
注册时间
2017-6-18
在线时间
166 小时
发表于 2017-9-22 01:20:19 来自手机 | 显示全部楼层
mack13013 发表于 2017-9-22 01:00
STM32的定时器的确比51复杂了很多,但是说到底是不是还是操作某个寄存器(地址)?

多出来的功能51难 ...

这么说拿个GPU手册,就可以简单搞出GPU驱动来,真是可笑
回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8017
金钱
8017
注册时间
2014-8-13
在线时间
1594 小时
发表于 2017-9-22 02:59:02 | 显示全部楼层
wlq19911021 发表于 2017-9-22 01:20
这么说拿个GPU手册,就可以简单搞出GPU驱动来,真是可笑

不觉得有什么好笑的。显卡驱动很难做吗?

从NT到WDM或者WDF,基础的处理可能不一样(MS驱动开发的思维模式在变化,但是有些基础的东西你是要实现的,比如创建驱动和设备,添加即插即用电源管理,卸载管理什么的),但是系统的API实现(比如DirectX的API),你要完成的。如果GPU已经完成开发,那么驱动完成就比较容易了。比如GPU能实现的API,多半你的驱动整理一下接收过来的数据,提交给GPU,然后将GPU的返回数据整理一下添加到IRP或者返回给用户层。GPU不能实现的功能,要么在你的驱动里实现,要么转发给操作系统,由操作系统默认处理(有的功能操作系统能实现,也有的操作系统没实现,此时体现在3D某功能不支持什么的)。


如果你拿着GPU手册,无法搞出GPU驱动来,无非两个原因:
1、开发者水平不够。
2、GPU手册数据不够充分。


当然,你要说我吹牛逼,我大概也会从上面两点找借口:
1当然符合,我windows驱动开发做过文件过滤和小端口,DOS下搞过采集卡。GPU驱动开发的一些基础知识(图形,PCI-E驱动什么的)并不掌握。
2也符合。现在市面上PC机的GPU大概就三家,Nvidia,AMD和Intel,不管是哪一家都没有公开的、充分的GPU手册出来。

所以,我搞不出GPU驱动来。

但是,STM32开发的话,你找不到的公开的、充分地数据和开发手册吗?


回复

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8017
金钱
8017
注册时间
2014-8-13
在线时间
1594 小时
发表于 2017-9-22 03:15:32 | 显示全部楼层
wlq19911021 发表于 2017-9-22 01:18
stm32的定时器,基本上不是用来定时的,ARM更不一样,怎么学习51的功能,首先根本就不是一个主

大家不用STM32的定时器来定时,并不等于不能这么做。

我就在这个论坛里发过一个帖子,分享了如何管理STM32F407的闲余定时器,在OS或者裸奔中定时的单次或者定时执行任务,定时器时间可限定,任务自定义,可传参,任务执行可单次也可限定执行次数或者一直执行下去,非常适合定时采集存储之类的操作模式。

可以申请多个定时器,对16位定时器或者32位定时器,低频和高频上的APB下定时器,根据申请定时器的时长和已被占用了的定时器,也做了一定程度的“智能”分配。


所有的那些操作,都是操作寄存器,并没有超出51不能理解的部分。

用51开发,能学会这个定时器管理,所花费的时间精力要比STM32高的多,因为51要实现类似功能,只能使用片外IC,还得扩展中断。

难道51单片机不支持这种模式,我们开发中就不会遇到了吗?

我觉得单片机的应用里,稍微比流水灯复杂一点的东西,51就要比STM32更难了。要说51比STM32更容易,我认为这句话专指流水灯。
回复

使用道具 举报

16

主题

339

帖子

0

精华

高级会员

Rank: 4

积分
849
金钱
849
注册时间
2017-6-18
在线时间
166 小时
发表于 2017-9-22 07:36:18 来自手机 | 显示全部楼层
但51仅只能简版的文件系统,简版的OS。只乎所有的都是简版的。
回复

使用道具 举报

2

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
203
金钱
203
注册时间
2017-7-6
在线时间
45 小时
发表于 2017-9-22 11:09:46 | 显示全部楼层
都没错,只是看问题的角度不一样而已。
回复

使用道具 举报

5

主题

41

帖子

0

精华

高级会员

Rank: 4

积分
680
金钱
680
注册时间
2017-9-22
在线时间
240 小时
发表于 2017-9-22 13:04:52 | 显示全部楼层
个人认为争论这些没意义,无论是51系列8位机,还是ARM体系的32位机,都没有超出冯.诺依曼模式范畴,基本原理还是一样的,量子计算机另当别论。实际上对于真正的搞51的高手来说,搞ARM体系的并不和想象的那么遥不可及,从技术角度方面说,搞51的和搞ARM的并没有高低贵贱之分,都是以“精”为贵。但是32位机寄存器数量,位数,应用和8位机毕竟不是一个数量级,须付出几倍努力方能有所成就。无论哪一个,都离不开“勤学苦练”,除非是天才。
对于LZ的“ARM裸奔的话程序是不是和51差不多”,从基本原理方面说,万变不离其宗,差不多,但裸奔搞项目的话,难度上ARM和51是不能用“差不多”形容的。
回复

使用道具 举报

349

主题

519

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1623
金钱
1623
注册时间
2014-7-11
在线时间
285 小时
 楼主| 发表于 2017-9-22 17:41:34 | 显示全部楼层
也就是说裸奔的话ARM难度很大吧
回复

使用道具 举报

5

主题

41

帖子

0

精华

高级会员

Rank: 4

积分
680
金钱
680
注册时间
2017-9-22
在线时间
240 小时
发表于 2017-9-22 19:01:43 | 显示全部楼层
其实真正难的是搭建项目开发架构,解决问题的方案或者说算法,对于硬件,无论是1位,4位,8位,32位,64位等,只是工具和平台而已,它们都有各自的应用领域,做一个小孩玩具“不倒翁”难道用32位机?反之,让八位机运行LINUX或者做双精度浮点运算?
事物不是绝对的,在都能完成同一项目并且不考虑性价比的情况下,用32位机裸奔,就是开始寄存器功能学习,配置,组合阶段当然比8位机繁琐的多,这时候不能用“差不多”进行比较,但当我们把它们分别建成自己的函数库,有经验积累的时候,用时顺手拈来,这种情况可以用“差不多”形容难度了。用操作系统也是一个道理,只不过函数库,外设驱动以及它们之间复杂的联系由高手们为我们做好了,如果项目难度超出裸奔了,那就要“穿衣”了,项目越复杂,穿的“衣”越“厚”,但“衣”的内部仍然是复杂的寄存器操作,说到底应该感谢C语言,“书山有路勤为径 ,学海无涯苦作舟”,在这行业混,这句话真是至理名言。哦,这已经超出我们的谈论范围了,不当之处,请批评指正,不说了,吃饭去!
回复

使用道具 举报

349

主题

519

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1623
金钱
1623
注册时间
2014-7-11
在线时间
285 小时
 楼主| 发表于 2017-9-22 19:03:51 | 显示全部楼层
原来这样
回复

使用道具 举报

16

主题

339

帖子

0

精华

高级会员

Rank: 4

积分
849
金钱
849
注册时间
2017-6-18
在线时间
166 小时
发表于 2017-9-22 19:47:32 来自手机 | 显示全部楼层
HXDZ 发表于 2017-9-22 19:01
其实真正难的是搭建项目开发架构,解决问题的方案或者说算法,对于硬件,无论是1位,4位,8位,32位,64位 ...

说实在的这个1位,4位倒是没见过。那我倒想了解下1位,4位,8位,16位,32位,64位指的是什么。是否代表了A,可以用于什么功能,但B却不可以。如果这样,又怎么个一样。所以说51再牛B的人也不过如此。有没有错
回复

使用道具 举报

16

主题

339

帖子

0

精华

高级会员

Rank: 4

积分
849
金钱
849
注册时间
2017-6-18
在线时间
166 小时
发表于 2017-9-22 19:51:06 来自手机 | 显示全部楼层
说实话51,AVR, PIC这类,也算是用过。
回复

使用道具 举报

16

主题

339

帖子

0

精华

高级会员

Rank: 4

积分
849
金钱
849
注册时间
2017-6-18
在线时间
166 小时
发表于 2017-9-22 19:58:24 来自手机 | 显示全部楼层
说实在的51后面还有个Arduino
回复

使用道具 举报

349

主题

519

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1623
金钱
1623
注册时间
2014-7-11
在线时间
285 小时
 楼主| 发表于 2017-9-22 20:06:07 | 显示全部楼层
说的没错,算法更复杂,Arduino跑马灯,ADC简单,但是算法就另说了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-18 16:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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