首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
飞思卡尔™半导体(Freescale Semiconductor)
» [求助]关于startup.c文件
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
[求助]关于startup.c文件
发短消息
加为好友
jinhao
当前离线
UID
117613
帖子
46
精华
0
积分
215
阅读权限
30
在线时间
0 小时
注册时间
2005-7-12
最后登录
2006-3-23
中级会员
UID
117613
性别
男
1
#
打印
字体大小:
t
T
jinhao
发表于 2005-8-29 21:00
|
只看该作者
[求助]关于startup.c文件
startup
,
文件
,
求助
先说说我的理解:startup.c文件完成了RAM的初始化,分为这样几个功能:堆栈指针的定位、全局变量的初始化(其中无初值的变量给清零,有初值的变量从rom区中拷贝初值到RAM的对应位置)、最后是跳转到Main函数。这里我没有看到堆的初始化。
我的问题:
首先是栈是如何定位的,有这样一句“extern char __SEG_END_SSTACK[];”,这个变量是哪来的,如何发挥作用?查看汇编代码可以发现,整个系统的第2条指令就是栈初始化,而且直接赋值,这个栈顶指针是如何得出来的?链接后的文件中就有了么?
第二个问题,如果要重写这个启动文件,该如何去做?因为虽然text段、rodata是写到芯片里了,如何读出来全局变量的信息来初始化RAM? startup.c文件中是用一个结构体对象来获取的,我们要写这个启动文件,显然不需要它,因为我们的目标不是在codeworriar里调试,而是写到HC08里,让它跑起来就可以了
收藏
分享
评分
我要注册!!
回复
引用
订阅
TOP
发短消息
加为好友
MCU_Fan
当前离线
版主
UID
104671
帖子
76
精华
0
积分
296
阅读权限
30
在线时间
0 小时
注册时间
2005-3-2
最后登录
2006-8-16
中级会员
UID
104671
性别
男
2
#
MCU_Fan
发表于 2005-9-1 16:30
|
只看该作者
__SEG_END_SSTACK 是CW Linker 专用的,不需要改,它定义栈的初始地址值。如需改栈的地址,改SP(HC08)便成(如用LDHX 地址; TXS)。栈的大小在PRM文件里STACKSIZE定义。最简单的startup.c是把栈的地址定义,其它的要看看程式的需要。例如用"for" loop和 "=" 定义变量的初始值。
回复
引用
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议