This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

RTX/SWI configuration

Hey folks,

I've been struggling with an issue in getting an STR7x (actually an STR712) to get as far as main() with RTX.

- I have read that RTX uses the first 8 or so SW interrupts for internal use.
- I have used the generic startup files (with EIC=0- so I think that this means that there is no interrupt service.
- When I boot the processor, it gets through the earliest part of the boot, and (based on stepping through assembly and referencing the mapfile) gets into initializing the STR7 libs
- a SWI occurs, and the configuration described means that an SWI is an endless loop.

So, I think I have a configuration issue, somehow I have to have these SWI events be processed by RTX. I've read vague references in the documenation that RTX provides an SWI handler- it would have to. But I can't seem to find any documentation, example, immediately straightforward way to make this connection.

I'm using uVision3.31 and the RealView toolchain. I have the 'RTX kernel' option selected in the operating system option.

Can anyone point me to some docs or otherwise help?

Thanks,
Steve

Parents
  • Thanks for the reply, but I need it to go through that initial setup stuff that winds up calling an SWI. We're using a non-standard scatter scheme and __main does that setup (along with other stuff) before calling main (according to what I read).

    Also, I would think that other OS services would not work if you didn't have the SWI handler mapped. RTX docs say that these interrupts are used for 'internal' purposes, but I would think that most basic OS functionality would require these interrupts.

    Did your application use any tasks/semaphores/IPC/other OS services? Did it work?

    Thanks for the ideas and info. I think my solution will lie in actually mapping the interrupt to a jump into the library's SWIHandler. I'm trying to do that manually now, but I'm not an ARM7 assembler guy (yet) :)

    Then again, I may be totally off base and completely misunderstand the problem. If that's the case, enlightenment would be appreciated. I am very new to this ARM stuff.

    Steve

Reply
  • Thanks for the reply, but I need it to go through that initial setup stuff that winds up calling an SWI. We're using a non-standard scatter scheme and __main does that setup (along with other stuff) before calling main (according to what I read).

    Also, I would think that other OS services would not work if you didn't have the SWI handler mapped. RTX docs say that these interrupts are used for 'internal' purposes, but I would think that most basic OS functionality would require these interrupts.

    Did your application use any tasks/semaphores/IPC/other OS services? Did it work?

    Thanks for the ideas and info. I think my solution will lie in actually mapping the interrupt to a jump into the library's SWIHandler. I'm trying to do that manually now, but I'm not an ARM7 assembler guy (yet) :)

    Then again, I may be totally off base and completely misunderstand the problem. If that's the case, enlightenment would be appreciated. I am very new to this ARM stuff.

    Steve

Children
  • I am not using OS services and of course the GNU library may be a totally different animal from what you are using. I was seeing "SWI 0x00123456" when stepping through the GNU C library setup which indicates a semi-hosting command. I disassembled the library and found labels that indicated it was trying to initialize a monitor of some sort. I don't need any kind of monitor since I am using uVision, so skipping it wasn't a problem. I have my full system up and running and it has been fine.

    Kathy