FreeRTOS Support Archive
The FreeRTOS support forum is used to obtain active support directly from Real
Time Engineers Ltd. In return for using our top quality software and services for
free, we request you play fair and do your bit to help others too! Sign up
to receive notifications of new support topics then help where you can.
This is a read only archive of threads posted to the FreeRTOS support forum.
The archive is updated every week, so will not always contain the very latest posts.
Use these archive pages to search previous posts. Use the Live FreeRTOS Forum
link to reply to a post, or start a new support thread.
[FreeRTOS Home] [Live FreeRTOS Forum] [FAQ] [Archive Top] [March 2016 Threads] FreeRTOS on Advantech PCM-3356 (IA32 mode i686 processor)Posted by dave-the-rave on March 2, 2016 I am using an Advantech PCM-3356, which has an AMD i686 processor.
Currently, I can compile FreeRTOS using gcc under Linux and get grub
to load it onto the 686. I still need to set up the timer interrupt,
integrate the scheduler with the tick, etc. (This is the IA32 mode of operation.)
Is there any way I could get a copy of the Board Support Package (BSP)
for this board?
The Advantech in question is a current production industrial ruggedized
PC clone, and runs Linux Mint 17.2 with no problem. Any BSP which supports
IA32 mode on a standard PC-type computer should work.
FreeRTOS on Advantech PCM-3356 (IA32 mode i686 processor)Posted by rtel on March 2, 2016 I presume this is the port you are using: http://www.freertos.org/RTOSIntelQuarkGalileoGCC.html - that should set up the timer interrupt and integrate the scheduler with the tick for you.
What are you looking for in the BSP? (what needs to be supported?)
FreeRTOS on Advantech PCM-3356 (IA32 mode i686 processor)Posted by dave-the-rave on March 2, 2016 I am using that port, or at least parts of it. Specifically:
BaseTypet xPortInstallInterruptHandler( ISRHandlert pxHandler,
uint32t ulVectorNumber );
The problem is that I can get swi to work just fine, but cannot get an IRQ 5 to fire.
The IRQ 5 is connected to an old-fashioned PC/104 bus and appears on the
8259 input pins (or their virtual equlvalent).
Three questions:
Is this thing using the PIC, the APIC, or something else?
I am using grub as the bootloader, which puts the cpu into flat IA32-bit mode, but which requires that I call the routine which does asm("lidt") before any interrupt service routine will run. Is this going to cause some kind of problem?
Do I have to change the interrupt vector location? If so, how do I do that?
FreeRTOS on Advantech PCM-3356 (IA32 mode i686 processor)Posted by rtel on March 2, 2016 That demo is using the APIC (predominantly at least, I think there are some interrupts routed via the legacy PIC used in the demo app).
The demo also uses grub - I think there is a pdf linked from the documentation page that gives more detail. With regards to setting up the APIC and IDT, see https://sourceforge.net/p/freertos/code/HEAD/tree/trunk/FreeRTOS/Source/portable/GCC/IA32_flat/port.c - the tables are set up before the scheduler is started, you can search for the lidt instruction being used.
FreeRTOS on Advantech PCM-3356 (IA32 mode i686 processor)Posted by dave-the-rave on March 2, 2016 I have read most of this, including the port.c. My question is, where does it put the vectors for the legacy interrupts (com1, com2, lpt1, etc?) I suspect that if I was to be sure about where exactly to put the vector, that would be half the problem solved.
I notice that, after grub has finished and after calling the port.c init stuff, the PIC registers contain non-zero mask bits, which implies that the PIC is being used. True?
FreeRTOS on Advantech PCM-3356 (IA32 mode i686 processor)Posted by rtel on March 3, 2016 I'm afraid I don't know much about grub, but presume how it leaves the
CPU will depend on your grub build or configuration.
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.
|