当前位置:首页 > 单片机 > 单片机
[导读]步骤与图示:1.先给个CPU的数据,需要注意的是三个红圈的地方,架构,型号,Flash和SRAM大小如图1(STM32F107VC 256KB FLASH,64KB SRAM)图12.Target的设置1)勾上可以用微库,减小生成代码的大小2,3)分别定义ROM区位

步骤与图示:

1.先给个CPU的数据,需要注意的是三个红圈的地方,架构,型号,Flash和SRAM大小如图1


(STM32F107VC 256KB FLASH,64KB SRAM)

图1

2.Target的设置

1)勾上可以用微库,减小生成代码的大小

2,3)分别定义ROM区位置及大小和RAM区位置和大小。在这里需要说明的是,Cortex-M3的架构有4G的寻址空间,而Flash的起始地址在0x08000000,RAM地址在0x20000000,在这里进行了第一次相关地址的更改;如图2

0x1000为4K,这里的0xc000则为48K的ROM分配;RAM的为16K;基本上移植个uCOS-II都够用了


图2

3.Output的设置

选择Remout文件夹

强调一下Name of Executable吧;这里默认的应该是project的名字,改成output;而且这与编译后产生的*.axf和*.sct文件名字都有关联;没勾选HEX;见图3


图3

4.Listing Label 默认

5.User Label 默认

6.C/C++ Label 默认

7. Asm Label 默认

8. Linker Label

最上边打上勾,是这效果;不打勾,就反白了

先说说打勾的时候,如图4;非人为操作,你什么都不用管了,(很多人会发现,新建的项目,刚开始的时候下面的Scatter File后的内容是空的,当你把这勾去掉后会自动出现,然后随你勾与不勾,就都是存在的了,不过此时还只是个影子,没有实际的文件,什么时候出现这个文件呢,法一:自然你可以自己写;法二:在出现影子后打上勾编译一次,此文件就产生了;在output的文件夹里;马上后文还会有对此文件内容的介绍)



图4

再说说不打勾的时候会反白一些内容,如图5,需要修改两个地方

图5

再来看看output.sct文件内容,如图6~6行内容是ROM的地址和大小,11行事RAM的地址和大小,很是一目了然,内容根据Target自动生成的,不需要手动修改


图6


LR_IROM1 0x20000000 0x0000C000 { ;load region size_region

ER_IROM1 0x20000000 0x0000C000{ ;load address = executionaddress

*.o (RESET, +First)

*(InRoot$$Sections)

.ANY (+RO)

}

RW_IRAM1 0x2000C000 0x00004000{ ;RW date

.ANY (+RW +ZI )

}

}

9.Debug的配置

分成几部分,原界面和Setting界面

1)原界面,如图7,首先选好J-link ,在keil5下,选择“CMSIS-DAP Debugger”,取消Load Application at Startup的勾选

图7

再说说这个RAM.ini文件,内容如下,如图8,有注释

首先LOAD output.axf,加载启动代码到RAM,关关于hex,bin文件和axf的关系,是在axf中存有Debug需要的一些调试语句,所以这文件与前2者内容上是不相同的,前两者属于其子集的关系,(这里的output.axf名字对应了我们上边设定的output的文件名设定,此文件在output中设定的文件夹下生成,跟output.sct在一起)从文件内容可以看到,中断向量表已经被映射到0x20000000,PC也指向了0x20000004,说明在RAM中进行调试时理论上可以的了

图8

RAM.INI文件:

/******************************************************************************/

/* RAM.INI: RAM Initialization File */

/******************************************************************************/

/* This file is part of the uVision/ARMdevelopment tools. */

/* Copyright (c) 2010 Keil - An ARMCompany. All rights reserved.*/

/* This software may only be used under theterms of a valid, current, */

/* end user licence from KEIL for acompatible version of KEIL software*/

/* development tools. Nothing else givesyou the right to use this software. */

/******************************************************************************/

FUNC void Setup (void) {

SP= _RDWORD(0x20000000); // SetupStack Pointer

PC= _RDWORD(0x20000004); // SetupProgram Counter

_WDWORD(0xE000ED08, 0x20000000);// Setup Vector Table Offset Register

}

LOAD..RemoutProject.axfINCREMENTAL //Download

Setup(); // Setup forRunning

g, main

()

2)进入setting如图9


图9

3)然后进入了Flash Download label,如图10~Flash的擦写有规矩,需要在有内容的情况下擦出一个扇区后方可写入,而此时的RAM自然不必要这样做,然后需要点击add添加Flash编程算法接着进入了选择界面,如图11


图10

在这里选择好属于自己的芯片Flash大小~256K ~

add后还需要再更改最后一行红线上的内容,此时需要先点一下刚选好的变成算法就会反白可编辑,然后编程算法会自动更改其自身的地址




图11

10.进入Utilities~同Debug一样,选择其中的setting其实刚刚讲过,其实是同一个,如图12

图12

RAM调制到此为止

需要提醒大家注意的几点是:

1.Debug开始后~不要点reset~因为这样后走的就是Flash的程序了~容易造成调试问题~结果是产生keil被kill掉的PC错误~

2.重新启动开发板后一定要build target一次~或者rebuild all一次再烧写程序~不然~很容易同上


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭