搜索
bottom↓
回复: 6

求MCC18编译环境下*.lkr文件修改相关说明文档【恢复】

[复制链接]

出0入0汤圆

发表于 2008-12-9 09:40:04 | 显示全部楼层 |阅读模式
本人目前使用PIC18F2550在bootloader使用过程中牵涉到*.lkr文件的修改,现求lkr文件修改的相关说明文档,或高人指点。

Tks~

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2008-12-18 15:55:17 | 显示全部楼层
已解决,结贴。

出0入0汤圆

发表于 2008-12-12 18:28:03 | 显示全部楼层
bootloader不能被擦掉的,为什么,你仔细想想就知道了.



估计你理解的bootloader运行机制是错的.

出0入0汤圆

 楼主| 发表于 2008-12-11 13:38:18 | 显示全部楼层
目前bootloader的基本功能已经实现,不过还有个问题没有解决:



现在bootloader能够正常起来,载入firmware后,firmware也能正常运行,但问题是以后每次启动后,都直接跑firmware。

读出HEX data后发现bootloader部分的code还是在的,并没有在load firmware时被擦掉。



希望能大家给我些提示。

出0入0汤圆

 楼主| 发表于 2008-12-9 13:09:13 | 显示全部楼层
目前打算正打算写个USB的bootloader,非常感谢你的回复

出0入0汤圆

发表于 2008-12-9 12:51:50 | 显示全部楼层
说明文档:



在pic单片机编程中,链接描述文件(*.lkr)是链接器的命令文件。它们指定以下内容:

 *  目标部件的程序和数据存储器区域

 *  堆栈大小和位置 (对于 MPLAB C18)

 *  源代码中的逻辑代码段与程序和数据区域的映射

MPLAB C18 C 编译器为每种单片机提供了多达四种类型的链接器描述文件(*.lkr)。这些链接器描述文件与MPLAB IDE所提供链接器描述文件的



不同之处在于,它们在编译器启动代码和库中自动链接,并留出堆栈区。为PIC18F4620单片机提供的四个链接器描述文件如下所示:

18f4620.lkr 供在非扩展模式下编译的应用程序使用。

18f4620i.lkr 供在非扩展模式下编译并使用 MPLAB ICD 2 调试的应用程序使用。“i”表示此链接器描述文件为MPLAB ICD 2使用的资源分配存储空间。

18f4620_e.lkr 供在扩展模式编译的应用程序使用。

18f4620i_e.lkr 供在扩展模式下编译并使用 MPLAB ICD 2 调试的应用程序使用。“i”表示此链接器描述文件为MPLAB ICD 2使用的资源分配存储空间。

对于 18f4620i_e.lkr 必须添加到 MPLAB IDE项目的项目文件中。

所需要的启动模块、标准函数库和处理器函数库在链接器描述文件中指定,所以在mplab的项目树的“Object Files”或“Library Files”中都不需要添加任何文件。当然,如果项目中要链接其它目标文件或库文件,那么应将它们添加到这些分支下。



下面我们结合18f4620.lkr来说明链接描述文件中代码的含义

// $Id: 18f4620.lkr,v 1.3 2004/04/26 18:09:00 curtiss Exp $

// File: 18f4620.lkr

// Sample linker script for the PIC18F4620 processor



//将当前目录library/object搜索路径,.代表当前目录

LIBPATH .



//FILES伪指令指定链接的目标或库文件

//注:可以在一个单独的 FILES 伪指令中指定多个目标或库文件。

FILES c018i.o

FILES clib.lib

FILES p18f4620.lib



//链接描述文件说明PICmicro MCU的存储器架构。这使链接器可把代码在可用的ROM 空间,把变量放在可用的 RAM 空间。标记PROTECTED的区域不会被用于一般程序或数据的分配。只有在为代码段指定了一个绝对地址时,或在链接描述文件中使用SECTION 伪指令将该代码段分配给该区域时,代码或数据才被分配到这些区域。





//CODEPAGE 伪指令用于程序代码、初始化的数据值、常数值和外部存储器。

CODEPAGE   NAME=vectors    START=0x0            END=0x29           PROTECTED //复位向量和中断向量

CODEPAGE   NAME=page       START=0x2A           END=0xFFFF   //用户存储空间

CODEPAGE   NAME=idlocs     START=0x200000       END=0x200007       PROTECTED //ID 地址单元

CODEPAGE   NAME=config     START=0x300000       END=0x30000D       PROTECTED    //配置存储空间

CODEPAGE   NAME=devid      START=0x3FFFFE       END=0x3FFFFF       PROTECTED //器件 ID 

CODEPAGE   NAME=eedata     START=0xF00000       END=0xF003FF       PROTECTED    //EEPROM 数据



//DATABANK(分组寄存器)和ACCESSBANK(快速操作寄存器)伪指令用于内部RAM中的变量

ACCESSBANK NAME=accessram  START=0x0            END=0x7F //Bank 0

DATABANK   NAME=gpr0       START=0x80           END=0xFF //Bank 0

DATABANK   NAME=gpr1       START=0x100          END=0x1FF //Bank 1

DATABANK   NAME=gpr2       START=0x200          END=0x2FF //Bank 2

DATABANK   NAME=gpr3       START=0x300          END=0x3FF //Bank 3

DATABANK   NAME=gpr4       START=0x400          END=0x4FF //Bank 4

DATABANK   NAME=gpr5       START=0x500          END=0x5FF //Bank 5

DATABANK   NAME=gpr6       START=0x600          END=0x6FF //Bank 6

DATABANK   NAME=gpr7       START=0x700          END=0x7FF //Bank 7

DATABANK   NAME=gpr8       START=0x800          END=0x8FF //Bank 8

DATABANK   NAME=gpr9       START=0x900          END=0x9FF //Bank 9

DATABANK   NAME=gpr10      START=0xA00          END=0xAFF //Bank 10

DATABANK   NAME=gpr11      START=0xB00          END=0xBFF //Bank 11

DATABANK   NAME=gpr12      START=0xC00          END=0xCFF //Bank 12

DATABANK   NAME=gpr13      START=0xD00          END=0xDFF //Bank 13

DATABANK   NAME=gpr14      START=0xE00          END=0xEFF //Bank 14

DATABANK   NAME=gpr15      START=0xF00          END=0xF7F //Bank 15

ACCESSBANK NAME=accesssfr  START=0xF80          END=0xFFF          PROTECTED //Bank 15 Special Function Registers(SFR)



//逻辑代码段用于指定应将定义的存储器区域的哪一个区域用于一段源代码。要使用逻辑代码段,用 SECTION 伪指令在链接描述文件中定义代



//码段,然后使用该语言内置机制在源文件中引用该名称 (如 MPLAB C18 的 #pragma section)。此代码段伪指令通过指定代码段的名



称,//以及包含此代码段的 ROM 中的程序存储器区块或 RAM 中的数据存储器区块来定义代码段:

//SECTION NAME=secName { ROM=memName | RAM=memName }

SECTION    NAME=CONFIG     ROM=config



//只有 MPLAB C18 要求设置软件堆栈。下面的语句指定堆栈大小以及堆栈将被分配到的可选 DATABANK:

//STACK SIZE=allocSize [RAM=memName]

STACK SIZE=0x100 RAM=gpr14

------------------------------------------------------------------------------------------------------------------------



请问你做的是USB的bootloader吗?

做bootloader话,还要认真翻看编译器手册.

出0入0汤圆

发表于 2013-1-24 13:26:15 | 显示全部楼层
bootloader搞好没
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-17 12:09

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表