We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
hi! i tried buliding target in keil in assembly language and it gave a cryptic error.. can anyone help me figure out how to build target or run a assembly language written code in keil... i can well do it in C but unable to figure it out using assembly.... Thanks.
Hi DivyaKumar, Building target is the same in C and Assembly. Once you add your assembly source file with ".a51" extension to the source group you should be able to build the target using icons present in the build toolbar. Ramya
You haven't said which product you're using, or what error you're getting, so it's impossible to say! Have you looked in your Examples folder...?
"assembly source file with '.a51' extension" That, of course, assumes that it's the 8051 tools. Other tools will differ!
hi! thanks for assistance.. i used * STARTUP.S: Startup file for Philips LPC2000 and then th source file contained a very simple programme: TTL ch4ex1 - move16 AREA Program,CODE,READONLY Main LDRB R1,Value STR R1,Result SWI &11 Value DCW &C123 ALIGN Result DCW 0 END and th error i found was : undefined symbol _main(referred frm startup.o) indefinrd symbol _use_two_region_memory (referred frm startup.o) target not created. as far as the question of product is concern ...i m unable to makle out what u wannna know... i m goin to burn one of the arm philips LS series......... and to cret .exe n other linking i m tring to use KEIL microversion3 arm development tool kit ....which i dowmloded frm http://www.keil.com free of cost...
i m goin to use ARM tools.....
"as far as the question of product is concern ...i m unable to makle out what u wannna know..." When you enter your message, immediately above the 'Summary' box is a box titled 'Product' - it's a drop-down list of Keil's Products; ie, C16x & ST10 Development Tools; C251 & 80C251 Development Tools; Cx51 & 8051 Development Tools; ARM7 Development Tools You should pick the one that describes the tools you are actually using. It now seems that would be "ARM7 Development Tools" And please stop the cute 'u' for "you", 'n' for "and", etc - if you really can't be bothered to make the effort to type them in full, then assembler programming is certainly not for you!
i am really sorry it ...thought it would help hasten the process.. i apologize...please help me fixing the problem.
"...thought it would help hasten the process.." Hasten your process of typing perhaps, but lengthens our process of reading and worse, demotivates us from replying. "undefined symbol _main(referred frm startup.o)" startup.s is the runtime startup code for a typical C program whose entry point is main(). I see you've got a "Main", but I think you'd agree that "Main" does not quite match "_main". "indefinrd symbol _use_two_region_memory (referred frm startup.o)" Determine what "_use_two_region_memory" and duplicate its functionality (and name) in your code or edit startup.s to eliminate the reference entirely.
"thought it would help hasten the process" It might save you the odd second or two of typing (although "wannna" is no quicker than "want to"), but it means that every one else has to struggle to decipher your meaning! " i used STARTUP.S: Startup file for Philips LPC2000 ... contained a very simple programme:" No, it is not a program! This is the code that runs before a 'C' program can start - it sets up all the stuff required for the 'C' program. It is not a program in itself - that's why you are getting the errors: "undefined symbol _main (referred frm startup.o)" As you know, every 'C' program starts with a function called main(). As it's a function, something has to call it - in the case of an embedded system, that "something" is the startup code! The startup code is meaningless on its own - its whole raison d'etre is as a preamble to the main 'C' code! "tring to use KEIL microversion3 arm development tool kit ....which i dowmloded" Note that's "microvision" - not "microversion" That download comes with a whole folder full of examples - take a look for an assembler sample.
Note that Keil has 3 versions of ARM tools: Realview, CARM, and GNU. Which one are you using? Realview is the current Keil product; CARM was the original Keil product; GNU is not a Keil product at all - see http://www.keil.com/forum/docs/thread7842.asp For assembler examples, you need to be sure that you have the right source code to go with your particular tools! For GNU support, you could try http://www.gnuarm.com/ or just put "GNU ARM Assembler" into your favourite internet search engine...
There's 3 links at http://www.gnuarm.com/resources.html
resp. sir, the problem with "main" is probably solved as it gives no error regarding "main" when i changed "main" to "_main" but then with the same assembly code it gave another error which i tried fixing but was unable. the same code with 'main' replaced by '_main' gave the output: first.afx:error:L6913E:invalid value for --ro-base. but i am not using ro in my code. what may be the mistake sir? thanks
how to write Assembly code in C language using KEIL software(C51) . example: void main(void) { int i; i = 0; while(1) { i++; setb P1.0; // assembly instruction delay(); clr P1.0; // assembly instruction } } please mail a copy to my e mail id vinay_attavane@rediffmail.com
"how to write Assembly code in C language using KEIL software(C51)." Why are you posting a C51 example when this thread is (now) clearly about ARM7?? You need to read the C51 Manual - it details the specific features and extensions of C51 that give you access to things like the 8051's ports and pins, bit-addressable objects, different memory spaces, etc, etc,... Don't even think about trying to do inline assembler before you thoroughly understand what C51 provides directly in 'C'!!
Hi Divyakumar, You appear to be using the RealView ARM tools from the assembler syntax in the snippet that you posted. __main is the entry point to the C library which needs to be called if you have C code in your project. It will eventually call main(). Your fix for this is not valid so. Check to see if you have the "Don't search Standard Libraries" option in the linker tab selected as these are present in these libraries. ro-base is the start address of the read-only section which obviously needs to be specified in some way to the linker. You are using the free downloaded version so this is being obtained from the information in the Target tab. Check that the information in this tab is correct.