Offline Keil uVision compiling with mbed online support (SOLUTION)
Topic last updated
25 Nov 2011, by
lhiggs CSUM.
3 replies
keil,
offline,
uvision
Hey I'm starting a new topic because the old one that relates to this is cluttered.
mbed.lib and keil
http://mbed.org/forum/mbed/topic/518/?page=1#comment-8522
So please just post Keil uVision stuff because it gets confusing when you start
talking about all the different compiler options available.
The procedure I used to get the mbed online compiler led blinky example to work
is based on App note 207 from Keil, along with example blinky uVision project.
http://www.keil.com/appnotes/files/apnt207.pdf
http://www.keil.com/download/files/apnt207.zip
Abstract
This Application Note demonstrates how to migrate a project based on mbed’s online IDE to a Keil µVision based project which allows for offline development. This is possible because both environments use ARM’s Real View tool suite which allows for a seamless migration.
I simply followed the application note to the word and got it working in about 2 min.
I didn't run into any of the linking problems that the old thread goes into detail
about, so it looks like it's all sorted out now.
It looks like this is a true "offline" solution.
Hopefully those arduino nuts will stop winning about the online cloud compiling thing and be willing to use a microcontroller with some real balls. Yea I know
that Keil uVision isn't opensource, and the eval version only supports 32kb, which is half the available ram on the mbed, but with the arduinos you only have 32kb anyway.
Replies
Just4pLeisure
#
08 May 2011
Thank you for posting this :-)
It took me a little longer than 2 minutes because I am using some features from a later mbed library than the one in the apnt207.zip file so had to download the latest files from here:
http://mbed.org/projects/libraries/svn/mbed/trunk
Simply download the header files and the other files, copying them over those from the zip file.
Another issue I had was that I am using '\e' to determine that the escape key has been pressed, this initially caused the Keil software to issue a warning and the Escape key wasn't recognised. I was able to correct this problem by adding a '- -gnu' instruction to the compiler options (see the 'Misc Controls' section):
So Keil's software works quite painlessly except that my project is too large :-(
Everything works fine with smaller projects though :-)
Hello,
I also followed the application note to the word but I still get some erros when compiling with uVision (I compiled the same program online and it worked fine).
The messages I got are the following:
..\bottle_reloj\main.cpp(79): error: #135: class "mbed::Serial" has no member "RxIrq"
..\bottle_reloj\main.cpp(79): error: #304: no instance of overloaded function "mbed::Serial::attach" matches the argument list
..\bottle_reloj\main.cpp(80): error: #135: class "mbed::Serial" has no member "TxIrq"
..\bottle_reloj\main.cpp(80): error: #304: no instance of overloaded function "mbed::Serial::attach" matches the argument list
compiling SDFileSystem.cpp...
compiling diskio.c...
.\mbed\FileHandle.h(19): error: #20: identifier "namespace" is undefined
.\mbed\FileHandle.h(19): error: #65: expected a ";"
.\mbed\FileHandle.h(45): warning: #12-D: parsing restarts here after previous syntax error
.\mbed\FileHandle.h(53): warning: #77-D: this declaration has no storage class or type specifier
.\mbed\FileHandle.h(53): error: #65: expected a ";"
.\mbed\FileHandle.h(65): error: #757: variable "virtual" is not a type name
.\mbed\FileHandle.h(65): error: #101: "ssize_t" has already been declared in the current scope
.\mbed\FileHandle.h(65): error: #65: expected a ";"
.\mbed\FileHandle.h(75): warning: #77-D: this declaration has no storage class or type specifier
.\mbed\FileHandle.h(75): error: #65: expected a ";"
.\mbed\FileHandle.h(88): error: #757: variable "virtual" is not a type name
.\mbed\FileHandle.h(88): error: #101: "off_t" has already been declared in the current scope
.\mbed\FileHandle.h(88): error: #65: expected a ";"
.\mbed\FileHandle.h(97): warning: #77-D: this declaration has no storage class or type specifier
.\mbed\FileHandle.h(97): error: #65: expected a ";"
.\mbed\FileHandle.h(99): error: #757: variable "virtual" is not a type name
.\mbed\FileHandle.h(99): error: #65: expected a ";"
.\mbed\FileHandle.h(110): warning: #12-D: parsing restarts here after previous syntax error
.\mbed\FileHandle.h(112): error: #169: expected a declaration
.\mbed\DirHandle.h(19): warning: #12-D: parsing restarts here after previous syntax error
.\mbed\DirHandle.h(21): error: #20: identifier "namespace" is undefined
.\mbed\DirHandle.h(21): error: #65: expected a ";"
.\mbed\DirHandle.h(46): warning: #12-D: parsing restarts here after previous syntax error
.\mbed\DirHandle.h(57): warning: #77-D: this declaration has no storage class or type specifier
.\mbed\DirHandle.h(57): error: #65: expected a ";"
.\mbed\DirHandle.h(62): warning: #77-D: this declaration has no storage class or type specifier
.\mbed\DirHandle.h(62): error: #65: expected a ";"
.\mbed\DirHandle.h(70): error: #757: variable "virtual" is not a type name
.\mbed\DirHandle.h(70): error: #65: expected a ";"
.\mbed\DirHandle.h(81): warning: #12-D: parsing restarts here after previous syntax error
.\mbed\DirHandle.h(83): error: #169: expected a declaration
.\mbed\DirHandle.h(87): error: #40: expected an identifier
.\mbed\DirHandle.h(87): error: #65: expected a ";"
.\mbed\DirHandle.h(95): warning: #12-D: parsing restarts here after previous syntax error
.\mbed\Base.h(15): error: #20: identifier "namespace" is undefined
.\mbed\Base.h(15): error: #65: expected a ";"
.\mbed\Base.h(37): warning: #12-D: parsing restarts here after previous syntax error
.\mbed\Base.h(39): warning: #77-D: this declaration has no storage class or type specifier
.\mbed\Base.h(39): error: #65: expected a ";"
.\mbed\Base.h(54): warning: #1295-D: Deprecated declaration name - give arg types
.\mbed\Base.h(74): error: #757: variable "virtual" is not a type name
.\mbed\Base.h(74): error: #65: expected a ";"
.\mbed\Base.h(93): warning: #77-D: this declaration has no storage class or type specifier
.\mbed\Base.h(93): error: #65: expected a ";"
.\mbed\Base.h(104): error: #757: variable "bool" is not a type name
compiling FATDirHandle.cpp...
compiling FATFileHandle.cpp...
Target not created
Should I download the files that Sophie said? btw, How did you do it? I mean, I didn't find an option to download the .h files directly, I would have to copy the text and then delete the file numbers and stuff (which would be quite annoying).
Thanks in advance!!
THX, it works.
first compiling without any error!
Without the downloading time -uVision-, it took 5 min to run!!
Please log in to post a reply.
Hey I'm starting a new topic because the old one that relates to this is cluttered. mbed.lib and keil http://mbed.org/forum/mbed/topic/518/?page=1#comment-8522
So please just post Keil uVision stuff because it gets confusing when you start talking about all the different compiler options available.
The procedure I used to get the mbed online compiler led blinky example to work is based on App note 207 from Keil, along with example blinky uVision project. http://www.keil.com/appnotes/files/apnt207.pdf http://www.keil.com/download/files/apnt207.zip
Abstract This Application Note demonstrates how to migrate a project based on mbed’s online IDE to a Keil µVision based project which allows for offline development. This is possible because both environments use ARM’s Real View tool suite which allows for a seamless migration.
I simply followed the application note to the word and got it working in about 2 min. I didn't run into any of the linking problems that the old thread goes into detail about, so it looks like it's all sorted out now.
It looks like this is a true "offline" solution.
Hopefully those arduino nuts will stop winning about the online cloud compiling thing and be willing to use a microcontroller with some real balls. Yea I know that Keil uVision isn't opensource, and the eval version only supports 32kb, which is half the available ram on the mbed, but with the arduinos you only have 32kb anyway.