ASM 板


LINE

看板 ASM  RSS
这个东西不是很好说明, 原理大概是这样: 只讨论 c 语言放在 .data section 中的变数。 int i=5; void f1() { } i 会放在 .data section, 假如在执行档中的位址是 0x100, 但是你放在 flash 中的 0x100 的话, i 就变成唯读的, 当你用 i=10 的时候, 是无法写入的。 该怎麽办? 放到可以读写的记忆体位置, 假设是 0xa100 好了。 那我怎麽作到 a 是 0x100 又是 0xa100 呢? 在 c 语言编译的时候, 必须让 i = 10 改成 (*)0xa100 = 10; 而放在 flash 时, i 要是 0x100。 linker script 就是在做这件事情。 再来就是程式在开始执行之前, 需要把 0x100 的 i 复制到 0xa100 上。 很抱歉说得很模糊, 有程式码来配合会比较容易理解。 https://github.com/descent/stm32f4_prog/blob/master/led/stm32.ld .data : AT (_etext) { _data = .; *(.data .data.*) _edata = .; } > SRAM https://github.com/descent/stm32f4_prog/blob/master/led/stm32.h ref: ResetISR 不过不好意思, 没有更简化的程式来帮助你理解, 因为要能正确运作 C, 需要的不只是这段。 而麻烦的事情在於怎麽完成这段程式码, 各个平台有所不同, 这是 cortex m stm32 系列的作法。 而我的作法是 gnu toolchain 的作法, 如果你用不同的开发工具, 细节可能不同, 但基本原理都是一样的。 ※ 引述《wei115 (ㄎㄎ)》之铭言: : 在没有作业系统的装置上(我用的是STM32F104) : 假使我的程式指令放在只读的ROM上 : 那我在执行时,要怎麽 : 把可读可写的变数和堆叠丢到RAM上? : 看了一些资料,好像写连结脚本可以解决? : 但想想不是阿,连结脚本只是指定哪些资料要放在ROM上,哪些资料要放在RAM上 : 他没有实际把资料作搬移的工作 : 开机时会要把函式丢到记忆体上并设定堆叠暂存器(以便函式呼叫) : 并且要把可读可写的区段搬移到记忆体上 : 所以编译器有加入实际搬移的code?让我在我的程式执行前做好这些工作? : 有没有相关资料或关键字可供参考,谢谢 -- 纸上得来终觉浅,绝知此事要躬行。 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 117.19.102.23
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/ASM/M.1526909641.A.A7D.html
1F:推 wei115: 感谢回文,我可能要再消化一下.... 05/22 23:40
2F:推 wei115: linker script我对它功能的理解是他会把那些区段要放在记 05/23 01:03
3F:→ wei115: 忆体中的那个位置和读写属性的「资料」写进目标文件,但 05/23 01:03
4F:→ wei115: 不会实际去做分配,难道其实linker script也会把实际上分 05/23 01:03
5F:→ wei115: 配的指令也把他加入目标文件吗? 05/23 01:03
我以前看的找不到了, 这2篇给你参考: https://www.crifan.com/detailed_lma_load_memory_address_and_vma_virtual_memory_address/ https://blog.csdn.net/redredbird/article/details/5986035https://blog.csdn.net/redredbird/article/details/5986035 ※ 编辑: descent (101.10.66.40), 05/23/2018 20:37:48







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP