打印
[DSC]

!补充constchar请教汇编 56800 DATA FLASH 定义一组常量(图)

[复制链接]
1654|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
itelectron|  楼主 | 2014-6-13 16:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
itelectron|  楼主 | 2014-6-13 16:47 | 只看该作者
本帖最后由 itelectron 于 2014-6-17 14:25 编辑

const char test_string[]="hello\n";

请教如何用汇编实现  

使用特权

评论回复
板凳
FSL_TICS_Fiona| | 2014-6-18 14:35 | 只看该作者
类似这样就可以:

Section constant
       
        GLOBAL         CONSTANT1,CONSTANT2
       
        org    X:
       
CONSTANT1:                ;
        DC $1234

CONSTANT2:                ;
        DC $A5A5


        ENDSEC                

使用特权

评论回复
地板
itelectron|  楼主 | 2014-6-18 20:08 | 只看该作者
回楼上  定义好了  如何引用  

move.w   X:$001000,A    ;//调试的时候0X1000-0x1fff 空间没有数据

使用特权

评论回复
5
itelectron|  楼主 | 2014-6-20 08:28 | 只看该作者
本帖最后由 itelectron 于 2014-6-22 10:30 编辑

补充:  我的 意思是  在 编译的  时候  自动 吧 0X1000---0X1FFF自动填充 一组数据  


如C语言中(1)
void xrom_fun(void)
{
   const short DROM[]=
   {
     0x0000,0x01F4,0x01F4,0x01F4,0x01F4,0x01F4,0x01F4,0x01F4,0x01F4
  };
}
======================================================================
如C语言中(2)

   const short DROM[]=
   {
     0x0000,0x01F4,0x01F4,0x01F4,0x01F4,0x01F4,0x01F4,0x01F4,0x01F4
  };
void xrom_fun(void)
{

}
=====================================================================


上面2种 书写方式  编译 结果是 不同的       如(1)的格式  编译的 时候 目标文件0x1000中有 数据   
                                                                      (2)的格式  编译的 时候 目标文件0x1000中没有 数据


使用特权

评论回复
6
itelectron|  楼主 | 2014-6-22 10:29 | 只看该作者
请教 用汇编  如何实现  上述C语言(1)的功能   编译的 时候目标文件地址 0X1000---0X1FFF自动填充 一组数据

使用特权

评论回复
7
itelectron|  楼主 | 2014-6-22 10:47 | 只看该作者
        section constant
        org        x:

        global        Eeprom

Eeprom:
        BSC      $1FFF-$1000,$1111

    ENDSEC

使用特权

评论回复
8
FSL_TICS_Robin| | 2014-6-27 09:32 | 只看该作者
itelectron 发表于 2014-6-27 07:58

楼主你好
以后回帖要注意: 点击待回复帖的 "回复" 按钮后发表回复内容,这样那楼的作者才会收到通知。


使用特权

评论回复
9
FSL_TICS_Fiona| | 2014-6-27 17:30 | 只看该作者
itelectron 发表于 2014-6-20 08:28
补充:  我的 意思是  在 编译的  时候  自动 吧 0X1000---0X1FFF自动填充 一组数据  

如果你使用方法(2),但是目标文件中没有生成数据,是因为数组没有被有效访问到。你可以在Link command file中用FORCE_ACTIVE来避免优化。 汇编语言编程也可以使用同样的方法,在Link command file中分配地址,FORCE_ACTIVE来避免优化。具体可以参考 56800E Build Tools Reference.pdf

使用特权

评论回复
10
itelectron|  楼主 | 2014-6-27 21:18 | 只看该作者
FSL_TICS_Fiona 发表于 2014-6-27 17:30
如果你使用方法(2),但是目标文件中没有生成数据,是因为数组没有被有效访问到。你可以在Link command  ...

MEMORY
{
    .p_interrupts_flash_ROM (RX)  : ORIGIN = 0x0000,   LENGTH = 0x00A4   # reserved for 5682x interrupts
    .p_flash_ROM            (RX)  : ORIGIN = 0x00A4,   LENGTH = 0x3F5C   # pROM is 16K words total

     # p_flash_ROM_data mirrors x_internal_RAM, mapping to origin and length
     # the "X" flag in "RX" tells the debugger flash p-memory.
     # the p-memory flash is directed to the address determined by AT
     # in the data_in_p_flash_ROM section definition  
     
    .p_flash_ROM_data       (RX)  : ORIGIN = 0x0001,   LENGTH = 0x0FFF # internal xRAM mirror

#   .p_reserved_1                 : ORIGIN = 0x4000,   LENGTH = 0x1C000   
    .p_boot_flash_ROM       (RX)  : ORIGIN = 0x20000,  LENGTH = 0x1000   # 4K words
#   .p_reserved_2                 : ORIGIN = 0x21000,  LENGTH = 0xE800   # 58K words   
    .p_internal_RAM         (RWX) : ORIGIN = 0x2F800,  LENGTH = 0x0800   # 2K words   
#   .p_reserved_3                 : ORIGIN = 0x30000,  LENGTH = 0x0000   
    .x_internal_RAM         (RW)  : ORIGIN = 0x0001,   LENGTH = 0x0FFF   # 4K x 16
    .x_flash_ROM            (R)   : ORIGIN = 0x1000,   LENGTH = 0x1000   # 4K x 16
#   .x_reserved_1                 : ORIGIN = 0x2000,   LENGTH = 0xD000   
    .x_onchip_peripherals   (RW)  : ORIGIN = 0xF000,   LENGTH = 0x1000   # n/a w/SDM
#   .x_reserved_2                 : ORIGIN = 0x010000, LENGTH = 0xFEFF00 # n/a
    .x_EOnCE                (RW)  : ORIGIN = 0xFFFF00, LENGTH = 0x0000   # n/a w/SDM
}
==========================================================================
在没有有效访问的情况下 要在.x_flash_ROM 空间内存放数据

$0001,$0002,$0003,$0004,$0005,$0006,$0007,

怎么用 FORCE_ACTIVE  具体实现。。。。。


FORCE_ACTIVE
The FORCE_ACTIVE directive allows you to specify symbols that you do not want the
linker to deadstrip. You must specify the symbol(s) you want to keep before you use the
SECTIONS keyword.
Prototype

FORCE_ACTIVE{ symbol[, symbol] }

============================================
FORCE_ACTIVE{ symbol[, symbol] }


使用特权

评论回复
11
itelectron|  楼主 | 2014-6-27 21:21 | 只看该作者
是不 是  加入
----------------------------------------------------------------------
ELF Linker Options
----------------------------------------------------------------------
  -[no]dead[strip]     # enable dead-stripping of unused code; default
  -force_active        # specify a list of symbols as undefined;
useful
    symbol[$0001,$0002,$0003,$0004,$0005,$0006,$0007,]      

使用特权

评论回复
12
itelectron|  楼主 | 2014-6-27 21:36 | 只看该作者
本帖最后由 itelectron 于 2014-6-27 22:18 编辑

在连接文件中加入  FORCE_ACTIVE {M56800_data}

isr_led.rar (44.62 KB)
在代码文件中加入         
       section M56800_data
        org        x:
        global        data_int
        
data_int:
        dc $1111
        dc $1111
        dc $1111
        dc $1111
        dc $1111
        dc $1111
        dc $1111
        dc $1111
        dc $1111
        dc $1111
        dc $1111
        dc $1111
        dc $1111
        dc $1111
        dc $1111
        dc $1111
        dc $1111
        dc $1111
    endsec

没有效果


使用特权

评论回复
13
itelectron|  楼主 | 2014-7-1 21:41 | 只看该作者
结贴 !!!!!!!!!!!解决问题

使用特权

评论回复
14
FSL_TICS_ZJJ| | 2014-7-15 11:53 | 只看该作者
好的,恭喜你解决问题,如果能分享解决方案就更好了。
感谢你对飞思卡尔产品的关注。

使用特权

评论回复
15
itelectron|  楼主 | 2014-10-8 16:54 | 只看该作者
FSL_TICS_ZJJ 发表于 2014-7-15 11:53
好的,恭喜你解决问题,如果能分享解决方案就更好了。
感谢你对飞思卡尔产品的关注。 ...

没有实质性解决,用其他方法,争取以后用回KEIL  飞思卡尔 麻烦资料 少 时间 耗不起。

使用特权

评论回复
16
itelectron|  楼主 | 2014-10-8 17:00 | 只看该作者
方法是 在主循环中  使用一下  用起来 很麻烦,

使用特权

评论回复
17
itelectron|  楼主 | 2014-10-8 17:01 | 只看该作者
无法 固定 数组 变量地址  

使用特权

评论回复
18
itelectron|  楼主 | 2014-10-8 17:03 | 只看该作者
你们 技术支持 自己都 不了解 自己的产品   怎么 能 推广的 好  疑问

使用特权

评论回复
19
FSL_TICS_ZJJ| | 2014-10-9 09:31 | 只看该作者
itelectron 发表于 2014-10-8 17:03
你们 技术支持 自己都 不了解 自己的产品   怎么 能 推广的 好  疑问

楼主你好!
其实关于DSC的支持工程师主要是通过官方的技术服务请求支持的。
所以如果需要详细且及时的DSC问题解答,请到官方提交技术服务请求。
目前支持论坛的工程师基本都是kinetis以及I.MX的,其他的问题比如DSC,一般我们会转给DSC工程师,但是就如之前所说,他们都是通过技术服务请求方式去解决问题,所以回答可能会有些延时。
给你带来的不便深表抱歉。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:MARK: zhi kan ji shu

274

主题

2762

帖子

8

粉丝