Hello there. Currently working on a Project around the STM32F100R6 Processor. I am using the newest (fully licenced) uVision MDK 4.22 and ST-Peripherals Library 3.5.0.
My problem is now that the System Viewer in Keils Debugger only shows me some parts of the actual peripherals the processor has. Most important to me would be to get a view of all the used timers, but the system viewer only gives me access to TIM2, TIM3 and TIM_G (TIM_G seems to represent TIM1 according to the address-values and memory map in the F100x datasheet). Using the memory view to get the timer config and counter values extracted would be possible, but it's not really pratical to pull out all the addresses all the time. (The F100 value line devices have TIM1-3, TIM6-7 and TIM15-17 included according to the datasheet...)
As far as i can tell, the system-viewer pulls its information about the registers out of the SFR-Files found in the install-directory of Keil. By choosing the processor-type in the project-options you get an entry in the .uvproj xml-file that points to that particular file for your processor. (Something like <SFDFile>SFD\ST\STM32F10xx\STM32F10xx4.sfr</SFDFile> in my case.)
Now, my question is, can i trick my Keil-Tools to use another SFR that maybe has a bit more peripherals defined in it? (just by editing that line in the project file?) From what i can see STM32F10xx4.sfr is by far the smallest SFR file, so it seems like the other files in that same folder (Ending in B, G, and E) would be a much better choice as they probably have a lot more definitions in it. The memory map is the same for the entire F100xx family, so the information/addresses should actually be correct, with the only problem that i could see peripherals in the system viewer that my particular processor would not have in reality, right? So, if this actually works, what else is the SFR-File used for? Is it involved in any other essential task, like during compiling/linking process, and could the wrong filename in the .uvproj lead to serious problems there?
The other way around would be to rewrite an SFR file that fits to the processor i am actually using. (I would take one of the bigger files and strip out the information about peripherals the 100x6 does not provide.) But when i look at the .SFR file with a normal txt-editor, i can't really make much sense of how its structure works, and uVision even refuses to display the files contents when opening. Maybe there is an editor out there that can help to visualize the SFR structure for easyer editing?
Hmmm... The lack of answers tells me that apparently noone has a solution for this problem.
I have now used the workaround mentioned above by editing the uvproj-file and tell uVision to use STM32F10xxB.sfr definitions. Interesting to know about this trick is that uVision somehow noticed my manual changes. If i go to the project options now, there is a new field below the operating system drop down menu, where i can directly choose another sfr-file to be used... Pretty nice to have if you suffer from bad (incomplete) sfr-files.
As of now, i did not have any problems with compiling and running my program, so it seems as if there is no real negative impact related to my changes. On the positive side, i do now have access to some more peripherals in the debug-view, and that really helped me to get all the peripherals initialized and set up as needed.
It's just a bit sad that Keil does not deliver a better, more complete solution for the perpheral view. Even by using the most complete SFR i could find for the STM32F100-Family, there are still some peripherals you cant open/see. Is this the same for all the processors out there, or did i just pick the black sheep out of all the processor families Keil supports? I did quite some work before with the F103 and F107 family, but there i never used as much peripherals, or by chance, just the ones that that the peripheral viewer had defined.
Anyway, i would still like to see a fix for the missing peripherals, or at least an editor/plugin/tool to adapt/expand the memory map in the SFR-files to whatever someone would want to see in his peripheral viewer.
(Just want to point out that i kinda miss the old style peripheral view that we now only have for Core Peripherals (NVIC, SysTick,..)
Hi,
I am currently looking into this... You can have a quick look if the file STM32F10xxB.SFR fits your needs.
C:\Keil\ARM\SFD\ST\STM32F10xx\STM32F10xxB.SFR
Go to: Options for Target -> Target -> System Viewer File (Select) -> Select that file.
. BR, /th.
Thanks for looking in to it. I am already using the STM32F10xxB.SFR, but there are still some peripherals missing. Most important to me would be to have all the general-purpose timers visible. As of now, there is no way to see TIM15, TIM16 and TIM17 in the peripheral viewer.
> It's just a bit sad that Keil does not deliver a better, more complete solution for the perpheral view.
In the past we had peripheral dialogs, that were manually created, for most of the devices. The problem is that there are so many new devices to support that this method can't be done anymore - for all devices.
So we invented the System Viewer. The process is, that we get a description from the CPU vendors in XML format. This description then is compiled by a tool named SVDConv.exe. This tool creates the System Viewer file in a pseudo-xml syntax, keeping everything that is needed by the System Viewer), and it also can create a C headerfile for the devices described in the XML file. The System Viewer pseudo-xml file (.sfd) then gets compiled into a binary .sfr by SFRcc2.exe, that gets delivered and can be viewed in the UV System Viewer.
--- If the XML file is not complete or not detailed enough, there is information missing in the System Viewer. We are continuously working on getting more and more complete files, but this is a process.
If the maximum possible structure of the XML file (see: CMSIS-SVD) is used, you'll get a 100% complete device description matching what you see inside the programming manual (so, there are text values as Drop-Down boxes for the bit-fields and so on...).
I.e. EnergyMicro has delivered very good descriptions. This does not help you, but you can have a look on that files to see the advantage of the System Viewer. We are still working on getting more detailled files.
Hello,
I am using the STM32F4Discovery board (with on-board ST-LINK/V2) and am not able to view the FPU registers in Debug mode. However, I can view the FPU registers in the simulator.
My question: is the limitation due to RealView v4.22a (perhaps the .sfr file) or ST-LINK/V2 ? Any information you could provide would help me bisect the problem and better focus my debug efforts.
Thank you!
Regards, Dave
> My question: is the limitation due to RealView v4.22a (perhaps the .sfr file) or ST-LINK/V2 ?
The Register Views are implemented in the Target Driver, so this seems to be an ST issue.
BR, /th.