78

帖子

0

TA的资源

纯净的硅(高级)

21
 
ding  hao dongxi a
此帖出自stm32/stm8论坛
 

回复

27

帖子

0

TA的资源

一粒金砂(中级)

22
 

楼主很强大,细细研读下。

此帖出自stm32/stm8论坛
 
 

回复

11

帖子

0

TA的资源

一粒金砂(中级)

23
 
看看
此帖出自stm32/stm8论坛
 
 

回复

10

帖子

0

TA的资源

一粒金砂(初级)

24
 
正在学习,感谢分享。
此帖出自stm32/stm8论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

25
 
好东西啊,学习一下
此帖出自stm32/stm8论坛
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

26
 
看看@@@
此帖出自stm32/stm8论坛
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

27
 
好得很啦
此帖出自stm32/stm8论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

28
 
  好资料
此帖出自stm32/stm8论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

29
 
支持一下
此帖出自stm32/stm8论坛
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

30
 
看看,学习学习
此帖出自stm32/stm8论坛
 
 
 

回复

1025

帖子

1

TA的资源

纯净的硅(高级)

31
 
开头看了就看不下去了

哈哈,LZ了解编译链接的详细过程么?不懂可以翻翻书,别瞎写,这样会误导新手滴
此帖出自stm32/stm8论坛
 
 
 

回复

1025

帖子

1

TA的资源

纯净的硅(高级)

32
 
首先,单片机上电后不会去找神马main,在单片机的世界里,没有main,那是C的东东,单片机只有PC寄存器

其次,main作为C的关键字,编译后都是C程序的开始,如果在链接脚本明确指定程序开始地址,那么main的地址就可以知道了,而非你所说的神马不定
此帖出自stm32/stm8论坛
 
 
 

回复

190

帖子

0

TA的资源

五彩晶圆(初级)

33
 

回复 31楼 lelee007 的帖子

“开头看了就看不下去了”
所以你的水平也就这样了……看完再说话
此帖出自stm32/stm8论坛
 
 
 

回复

381

帖子

0

TA的资源

纯净的硅(高级)

34
 
围观
此帖出自stm32/stm8论坛
 
 
 

回复

1025

帖子

1

TA的资源

纯净的硅(高级)

35
 
原帖由 losingamong 于 2011-6-16 08:48 发表 “开头看了就看不下去了” 所以你的水平也就这样了……看完再说话


拜托,是你的水平就那样好不好

麻烦你看下32L所说,有错误烦请您指出,再看看你自己写的,什么东东
此帖出自stm32/stm8论坛
 
 
 

回复

1025

帖子

1

TA的资源

纯净的硅(高级)

36
 
基国所谓的程序员就这么笑死人,仅仅会写几行C代码而已,就觉得自己牛BBBBBBBBBBB的不行了

你就算弄不出来编译器,也应该弄明白编译器怎么工作的吧,不知道就敢跟那乱写,对你这种水平,我只能说回去多看看书
此帖出自stm32/stm8论坛
 
 
 

回复

1025

帖子

1

TA的资源

纯净的硅(高级)

37
 
看来俺的发言很难让LZ信服哈,还是等有说服力的高手出来给LZ解释解释,好让LZ信服
此帖出自stm32/stm8论坛
 
 
 

回复

2130

帖子

0

TA的资源

五彩晶圆(中级)

38
 
ARM M0 M3一类的内核是和ARM9这样的常规内核不一样的,其启动过程由编译器自动解释定位到MAIN函数入口位置,就和PIC、51这类单片机是一样的,不需要你过多费心。
LZ的文章还没来得及看,lelee007你说有问题。那请直接指出问题在那里,请不要随意讽刺别人的成果
此帖出自stm32/stm8论坛
 
 
 

回复

190

帖子

0

TA的资源

五彩晶圆(初级)

39
 
首先,单片机上电后不会去找神马main,在单片机的世界里,没有main,那是C的东东,单片机只有PC寄存器

其次,main作为C的关键字,编译后都是C程序的开始,如果在链接脚本明确指定程序开始地址,那么main的地址就可以知道了,而非你所说的神马不定


1、单片机上电后不会去找神马main,在单片机的世界里,没有main,那是C的东东,单片机只有PC寄存器……
       
  我的原话是:如此一来main函数似乎成为了理所当然的起点——因为C程序往往从main函数开始执行。但一个
  经常会被忽略的问题是:微控制器(单片机)上电后,是如何寻找到并执行main函数的呢?

  这只是个引子,提出一个疑问:单片机从上电开始,到执行main函数之前,经历了什么样的一个过程。如果你认为你说的话我不懂,那显然你没有看完整篇文章,
  文章的最后一句话是这样说的:
  当STM32遇到复位信号后,则从0x80000004处取出复位中断服务入口地址,继而执行复位中断服务程序,然后跳转__main函数,最后进入mian函数,来到C的世界。
  这句话里面,能看出来我表达的是“单片机上电后会去找main么”?

2、其次,main作为C的关键字,编译后都是C程序的开始……
   main是c程序的开始,这是你说的。STM32的启动文件里面有这样一段汇编代码:

   IMPORT  __main
   LDR     R0, =__main
   BX      R0

   这段代码的意思是跳转到__main入口,文章中提到:
   __main标号表示C/C++标准实时库函数里的一个初始化子程序__main的入口地址。
   该程序的一个主要作用是初始化堆栈(对于程序清单一来说则是跳转__user_initial_stackheap标号
   进行初始化堆栈的),并初始化映像文件,最后跳转C程序中的main函数。这就解释了为何所有的C程
   序必须有一个main函数作为程序的起点——因为这是由C/C++标准实时库所规定的——并且不能更改,
   因为C/C++标准实时库并不对外界开发源代码。因此,实际上在用户可见的前提下,程序在第204行后
   就跳转至.c文件中的main函数,开始执行C程序了。
   我请你求证这段话的准确性,然后请你告诉我C/C++标准实时库__main函数属不属于C程序的一部分,再请
   你告诉我main是不是C程序最初开始的地方。

3、如果在链接脚本明确指定程序开始地址,那么main的地址就可以知道了,而非你所说的神马不定……
   脚本确实可以定位函数和变量的位置。但如果你没指定呢?你写C代码会亲自定义mian函数的入口地址,然后自己写汇编代码来跳转么?
   对于STM32来说,通常的情况是,调用__main函数来达到跳转main函数的结果。

   和你争论一点意义都没有,我要牛逼,我还有空来码字?还能看得见你这种技术民工?

[ 本帖最后由 losingamong 于 2011-6-16 16:54 编辑 ]
此帖出自stm32/stm8论坛
 
 
 

回复

2130

帖子

0

TA的资源

五彩晶圆(中级)

40
 
呃,LZ淡定
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表