- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我为 Kinetis K24 Cortex M4 编写了一个引导加载程序。引导加载程序在运行时通过 USB 将附加功能加载到 RAM 中。该 ramcode 作为其自己的 EWARM 项目存在,生成二进制文件。该二进制文件的入口点必须始终为 0x20000000, vector 表必须始终位于 0x20007000,以便与我的 .NET 工具完美配合。 IAR 启动代码处理 .bss 和 .data 副本的清除,但它也做了一些我不想要的其他事情。我不知道如何强制 IAR 入口点到特定地址,所以我创建了自己的入口点,如下所示
#pragma section=".bss"
#pragma location=".init"
__interwork int __low_level_init(void)
{
char * from = __section_begin(".bss");
char * to = __section_end(".bss");
__DI(); // Disable interrupts
memset(from, 0x00 , (to - from));
memcpy(__vector_table, (unsigned char *)ROM_VECTOR_LOCATION, VECTOR_TABLE_SIZE);
SCB_VTOR = (unsigned int) & __vector_table;
main();
SCB_VTOR = (uint32_t)ROM_VECTOR_LOCATION;
}
当我调试代码时,我可以看到初始化为非零值的全局变量采用随机值。我相信这是因为我没有将 .data 部分从 LMA 复制到 VMA。
我的问题是如何将 .data 部分的副本从 LMA 复制到 VMA?
如果我能弄清楚如何分解它,但入口点不能是重置 vector ,我也会选择使用 IAR 启动代码。入口点必须是 0x20000000, vector 表必须位于 0x20007000
最佳答案
处理 .data 节副本的 IAR 函数称为 __iar_data_init3()。我曾考虑过直接调用它,但不敢相信它这么简单。 IAR 建议这是正确的解决方案。我还使用关键字 __root 来防止编译器删除我的“未使用”函数。这使我能够将其重命名为更合适的名称,例如startup()。调用它 __low_level_init() 只是一个防止编译器删除它的 hack。 __low_level_init() 不是作为启动序列的一部分调用的,而是作为我在引导加载程序中加载程序计数器的入口点调用的。这是我的最终解决方案
#pragma section=".bss"
#pragma location=".init"
__root void startup()
{
char * from = __section_begin(".bss");
char * to = __section_end(".bss");
memset(from, 0x00 , (to - from));
__iar_data_init3();
memcpy(__vector_table, (unsigned char *)ROM_VECTOR_LOCATION, VECTOR_TABLE_SIZE);
__DI(); // Disable interrupts
SCB_VTOR = (unsigned int) & __vector_table;
main();
SCB_VTOR = (uint32_t)ROM_VECTOR_LOCATION;
}
还有一个名为 __iar_zero_init3() 的函数可以处理 .bss 的归零,但是在第一次尝试时它导致我的程序崩溃。我无法想象需要做很多工作才能使其正常工作。
关于c - 使用 IAR EWARM 手动将 .data 部分从闪存复制到 RAM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48425861/
前言:这个问题是关于我正在与我的大学教授合作的一个项目。这不是为了成绩,但我在这位教授中的声誉确实很重要。因此,虽然我在这个项目上的成功对我来说很重要,但我并不认为向 Stack Overflow 寻
因此,与上一次相同的大学项目,这一次我遇到了未定义方法的麻烦。我的代码的完整性如下 package { import flash.display.MovieClip; import flash.eve
我只是想问问这是不是一个熟悉的现象。我们有一个带有文本框的小型 Flash 应用程序。 在 OSX Lion 下,flash < 10.3 .. 工作正常 使用 OSX Lion 和 Flash 10
对于某些人来说,这个问题可能很微不足道,但我不记得哪个是正确的名字对于这款闪光灯 slider ,其产品来自 here 原来的名字不是slider而是别的东西... 第二个问题:你知道像这样免费的fl
我目前正在使用 flash CS5 构建一个 iOS 应用程序,我需要一些关于几个功能的帮助: 是否可以添加应用内购买?如果是,它是如何工作的? 是否可以在应用程序中添加 iAd 广告?如果是这样,如
有没有什么简单的方法可以从 Flash IDE 中获取路径(一系列点)到 ActionScript 代码中? 例如,如果您想为要用作碰撞对象的游戏世界绘制轮廓,而现在在 AS3 中,您希望获得所绘制路
我有一个 Beagle 板 OMAP3530-GP,我已将内核和 rootfs 复制到 SD 卡的两个分区中并想启动它。 SD卡分区1:FAT32启动分区 具有相同顺序的以下文件: MLO u-boo
大学毕业后,我终于有时间回去练习我的 Flash 工作了,我需要一些帮助来让声音循环播放并根据正在播放的动画部分进行更改。 这也是我问的一个老问题的部分后续问题,所以如果你不明白,请看这里以获得更多关
我的问题是我的项目编译时间越来越长。 我的当务之急是如何加快编译速度?我现在用的是SSD硬盘和四核CPU。您认为购买 I7 核心会加快编译速度吗? 我担心它不会,因为 Flash CS5 不会利用多核
我尝试获取 mp3 flash player在所有浏览器上使用我的 javascript。一开始一切顺利,但很快意识到我的代码不适用于 MSIE。 在尝试找出后,我在引用代码中找到了这个: eva
我有 3 个问题来阐明我的 AIR 应用程序工作流程: 我在使用 Flash CS5 制作游戏时可以使用 Spark 组件吗? 当我使用 Flash Builder 时,我可以在我的 AIR for
我正在使用 YQL 尝试为我正在进行的项目查找乐队照片。如果找到图像,它会在 XML 响应中返回,然后我的 Flash 代码将其发布。但是如果没有找到,我不太确定如何告诉 Flash 不做任何事情。这
我从 Rails 3.2 升级到 4.0,现在重定向后我的 flash 消息都不起作用。 我检查过以确保我显示 Flash 消息的方式没有问题。不涉及重定向的 Flash 消息工作正常。 sessio
几个月来我一直试图解决这个问题...... 在 Flash 9 中,我尝试加载流式 MP3 文件并计算其轨道长度。我可以做到这一点,但是当 mp3 的 channel 是单声道时,时间是原始音轨长度的
我有这个代码: def create login(params[:email], params[:password]) if current_user flash[:notice] =
我正在尝试在Windows 7上使用JTAG ST-Link/V2写入STM32L476的闪存。无需上传软件,我只需将数据写入可读取和删除的非 volatile 位置。 作为一个硬件方面的新手,并且仅
当我尝试通过 fastboot system.img(从我的自定义 AOSP 构建)刷入 Sony Xperia Z3 时,出现以下错误: # fastboot flash system system
我正在内存非常受限的嵌入式 Linux 设备上通过 HTTP 将一个大文件 ( 1Gb ) 流式传输到我在 Qt 中的服务器。当我第一次收到 header 时,我确定将数据写入文件系统的何处,创建一个
我使用 Play 创建了一个 HTTP 实时流传输系统!框架和 FFMPEG。文件在不同的带宽上进行编码,并随后进行分段以传送到当前的 iOS 设备。 但是,我想扩展到网站上的嵌入式播放器(跨平台)和
我在 AS3 中有一个可用的麦克风录音脚本,我已经能够成功地使用它通过 AMF 将 .wav 文件保存到服务器。这些文件可以在任何音频播放器中正常播放,没有奇怪的效果。 作为引用,这是我为捕获麦克风的
我是一名优秀的程序员,十分优秀!