MicroC-OS-II running on Microblaze with UARTLITE in interrupt mode not working
Hello,
I am trying to write and application that uses the MicroBlaze which runs the MicroC-OS-II. I am also trying to use the UARTLITE in interrupt mode.
Currently I can use the UARTLITE in interrrupt mode if I run a standalone package that is without MicroC-OS-II.m
I read the documentation attached see page 22 (Handling Interrupts). On how the OS handles interrupts but I am little confused on how to setup the UARTLITE in interrrupt mode to work with the OS.
I know that OS_CPU_ISR() handles the interrupt but how do I make it so that it handles the uartlite interrupt.
I am really confused how I should modify the UARTLITE interrupt code below to work with MICROC/OS. As really confused I MEAN I JUST DON"T understand.
* (c) Copyright 2002-2013 Xilinx, Inc. All rights reserved.
* This file contains confidential and proprietary information of Xilinx, Inc.
* and is protected under U.S. and international copyright and other
* intellectual property laws.
* DISCLAIMER
* This disclaimer is not a license and does not grant any rights to the
* materials distributed herewith. Except as otherwise provided in a valid
* license issued to you by Xilinx, and to the maximum extent permitted by
* applicable law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND WITH ALL
* FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS,
* IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF
* MERCHANTABILITY, NON-INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE;
* and (2) Xilinx shall not be liable (whether in contract or tort, including
* negligence, or under any other theory of liability) for any loss or damage
* of any kind or nature related to, arising under or in connection with these
* materials, including for any direct, or any indirect, special, incidental,
* or consequential loss or damage (including loss of data, profits, goodwill,
* or any type of loss or damage suffered as a result of any action brought by
* a third party) even if such damage or loss was reasonably foreseeable or
* Xilinx had been advised of the possibility of the same.
* CRITICAL APPLICATIONS
* Xilinx products are not designed or intended to be fail-safe, or for use in
* any application requiring fail-safe performance, such as life-support or
* safety devices or systems, Class III medical devices, nuclear facilities,
* applications related to the deployment of airbags, or any other applications
* that could lead to death, personal injury, or severe property or
* environmental damage (individually and collectively, "Critical
* Applications"). Customer assumes the sole risk and liability of any use of
* Xilinx products in Critical Applications, subject only to applicable laws
* and regulations governing limitations on product liability.
* THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS PART OF THIS FILE
* AT ALL TIMES.
* @file xuartlite_intr_example.c
* This file contains a design example using the UartLite driver (XUartLite) and
* hardware device using the interrupt mode.
* @note
* The user must provide a physical loopback such that data which is
* transmitted will be received.
* MODIFICATION HISTORY:
* <pre>
* Ver Who Date Changes
* 1.00a jhl 02/13/02 First release
* 1.00b rpm 10/01/03 Made XIntc declaration global
* 1.00b sv 06/09/05 Minor changes to comply to Doxygen and coding guidelines
* 2.00a ktn 10/20/09 Updated to use HAL Processor APIs and minor changes
* for coding guidelnes.
* </pre>
/***************************** Include Files *********************************/
#include "xparameters.h"
#include "xuartlite.h"
#include "xintc.h"
#include "xil_exception.h"
/************************** Constant Definitions *****************************/
* The following constants map to the XPAR parameters created in the
* xparameters.h file. They are defined here such that a user can easily
* change all the needed parameters in one place.
#define UARTLITE_DEVICE_ID XPAR_UARTLITE_2_DEVICE_ID
#define INTC_DEVICE_ID XPAR_INTC_0_DEVICE_ID
#define UARTLITE_INT_IRQ_ID XPAR_INTC_0_UARTLITE_2_VEC_ID
* The following constant controls the length of the buffers to be sent
* and received with the UartLite device.
#define TEST_BUFFER_SIZE 100
/**************************** Type Definitions *******************************/
/***************** Macros (Inline Functions) Definitions *********************/
/************************** Function Prototypes ******************************/
int UartLiteIntrExample(u16 DeviceId);
int SetupInterruptSystem(XUartLite *UartLitePtr);
void SendHandler(void *CallBackRef, unsigned int EventData);
void RecvHandler(void *CallBackRef, unsigned int EventData);
/************************** Variable Definitions *****************************/
XUartLite UartLite; /* The instance of the UartLite Device */
XIntc InterruptController; /* The instance of the Interrupt Controller */
* The following variables are shared between non-interrupt processing and
* interrupt processing such that they must be global.
* The following buffers are used in this example to send and receive data
* with the UartLite.
u8 SendBuffer[TEST_BUFFER_SIZE];
u8 ReceiveBuffer[TEST_BUFFER_SIZE];
* The following counters are used to determine when the entire buffer has
* been sent and received.
static volatile int TotalReceivedCount;
static volatile int TotalSentCount;
* Main function to call the UartLite interrupt example.
* @param None
* @return XST_SUCCESS if successful, XST_FAILURE if unsuccessful
* @note None
int main(void)
int Status;
xil_printf("Started\n");
* Run the UartLite Interrupt example, specify the Device ID that is
* generated in xparameters.h.
Status = UartLiteIntrExample(UARTLITE_DEVICE_ID);
if (Status != XST_SUCCESS) {
return XST_FAILURE;
return XST_SUCCESS;
* This function does a minimal test on the UartLite device and driver as a
* design example. The purpose of this function is to illustrate
* how to use the XUartLite component.
* This function sends data and expects to receive the same data through the
* UartLite. The user must provide a physical loopback such that data which is
* transmitted will be received.
* This function uses interrupt driver mode of the UartLite device. The calls
* to the UartLite driver in the handlers should only use the non-blocking
* calls.
* @param DeviceId is the Device ID of the UartLite Device and is the
* XPAR_<uartlite_instance>_DEVICE_ID value from xparameters.h.
* @return XST_SUCCESS if successful, otherwise XST_FAILURE.
* @note
* This function contains an infinite loop such that if interrupts are not
* working it may never return.
int UartLiteIntrExample(u16 DeviceId)
int Status;
int Index;
* Initialize the UartLite driver so that it's ready to use.
Status = XUartLite_Initialize(&UartLite, DeviceId);
if (Status != XST_SUCCESS) {
return XST_FAILURE;
* Perform a self-test to ensure that the hardware was built correctly.
Status = XUartLite_SelfTest(&UartLite);
if (Status != XST_SUCCESS) {
return XST_FAILURE;
* Connect the UartLite to the interrupt subsystem such that interrupts can
* occur. This function is application specific.
Status = SetupInterruptSystem(&UartLite);
if (Status != XST_SUCCESS) {
return XST_FAILURE;
* Setup the handlers for the UartLite that will be called from the
* interrupt context when data has been sent and received, specify a
* pointer to the UartLite driver instance as the callback reference so
* that the handlers are able to access the instance data.
XUartLite_SetSendHandler(&UartLite, SendHandler, &UartLite);
XUartLite_SetRecvHandler(&UartLite, RecvHandler, &UartLite);
* Enable the interrupt of the UartLite so that interrupts will occur.
XUartLite_EnableInterrupt(&UartLite);
* Initialize the send buffer bytes with a pattern to send and the
* the receive buffer bytes to zero to allow the receive data to be
* verified.
for (Index = 0; Index < TEST_BUFFER_SIZE; Index++) {
SendBuffer[Index] = Index;
ReceiveBuffer[Index] = 0;
* Start receiving data before sending it since there is a loopback.
XUartLite_Recv(&UartLite, ReceiveBuffer, TEST_BUFFER_SIZE);
* Send the buffer using the UartLite.
XUartLite_Send(&UartLite, SendBuffer, TEST_BUFFER_SIZE);
* Wait for the entire buffer to be received, letting the interrupt
* processing work in the background, this function may get locked
* up in this loop if the interrupts are not working correctly.
while ((TotalReceivedCount != TEST_BUFFER_SIZE) ||
(TotalSentCount != TEST_BUFFER_SIZE)) {
for (Index = 0; Index < TEST_BUFFER_SIZE; Index++)
xil_printf("%d",ReceiveBuffer[Index]);
* Verify the entire receive buffer was successfully received.
for (Index = 0; Index < TEST_BUFFER_SIZE; Index++) {
if (ReceiveBuffer[Index] != SendBuffer[Index]) {
return XST_FAILURE;
return XST_SUCCESS;
* This function is the handler which performs processing to send data to the
* UartLite. It is called from an interrupt context such that the amount of
* processing performed should be minimized. It is called when the transmit
* FIFO of the UartLite is empty and more data can be sent through the UartLite.
* This handler provides an example of how to handle data for the UartLite,
* but is application specific.
* @param CallBackRef contains a callback reference from the driver.
* In this case it is the instance pointer for the UartLite driver.
* @param EventData contains the number of bytes sent or received for sent
* and receive events.
* @return None.
* @note None.
void SendHandler(void *CallBackRef, unsigned int EventData)
TotalSentCount = EventData;
* This function is the handler which performs processing to receive data from
* the UartLite. It is called from an interrupt context such that the amount of
* processing performed should be minimized. It is called data is present in
* the receive FIFO of the UartLite such that the data can be retrieved from
* the UartLite. The size of the data present in the FIFO is not known when
* this function is called.
* This handler provides an example of how to handle data for the UartLite,
* but is application specific.
* @param CallBackRef contains a callback reference from the driver, in
* this case it is the instance pointer for the UartLite driver.
* @param EventData contains the number of bytes sent or received for sent
* and receive events.
* @return None.
* @note None.
void RecvHandler(void *CallBackRef, unsigned int EventData)
TotalReceivedCount = EventData;
* This function setups the interrupt system such that interrupts can occur
* for the UartLite device. This function is application specific since the
* actual system may or may not have an interrupt controller. The UartLite
* could be directly connected to a processor without an interrupt controller.
* The user should modify this function to fit the application.
* @param UartLitePtr contains a pointer to the instance of the UartLite
* component which is going to be connected to the interrupt
* controller.
* @return XST_SUCCESS if successful, otherwise XST_FAILURE.
* @note None.
int SetupInterruptSystem(XUartLite *UartLitePtr)
int Status;
* Initialize the interrupt controller driver so that it is ready to
* use.
Status = XIntc_Initialize(&InterruptController, INTC_DEVICE_ID);
if (Status != XST_SUCCESS) {
return XST_FAILURE;
* Connect a device driver handler that will be called when an interrupt
* for the device occurs, the device driver handler performs the
* specific interrupt processing for the device.
Status = XIntc_Connect(&InterruptController, UARTLITE_INT_IRQ_ID,
(XInterruptHandler)XUartLite_InterruptHandler,
(void *)UartLitePtr);
if (Status != XST_SUCCESS) {
return XST_FAILURE;
* Start the interrupt controller such that interrupts are enabled for
* all devices that cause interrupts, specific real mode so that
* the UartLite can cause interrupts through the interrupt controller.
Status = XIntc_Start(&InterruptController, XIN_REAL_MODE);
if (Status != XST_SUCCESS) {
return XST_FAILURE;
* Enable the interrupt for the UartLite device.
XIntc_Enable(&InterruptController, UARTLITE_INT_IRQ_ID);
* Initialize the exception table.
Xil_ExceptionInit();
* Register the interrupt controller handler with the exception table.
Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_INT,
(Xil_ExceptionHandler)XIntc_InterruptHandler,
&InterruptController);
* Enable exceptions.
Xil_ExceptionEnable();
return XST_SUCCESS;
Hello,
I have a KC705 board, with Microblaze on it. My software is Witten above the operating system of µC/OS-II.I am trying to write multi task ie. task1 and task2. Application that uses the MicroBlaze which runs the MicroC-OS-II.
I am using the UARTLITE able to run hello world program successfully is with MicroC-OS-II.I read the documentations, On how the OS handles multi task, but I am little confused on how to implement..(i am new to RTOS). Please suggest me or share the any documents, any example codes.
~thanks
ASHIOK H
Similar Messages
-
Report RHSTRU00 with Evaluation Path BOSSORG is not working
Hello Friends,
I am trying to run the Report RHSTRU00 with Evaluation Path BOSSORG and it never produces output. If I run the report with any other Evaluation path,it works......
Can anybody help me in this issue,
Thanks
Kisusolved on own.
-
On my macbook pro I have a message on my homepage telling me that certain items want to use my keychain. I've pressed cancel the message will not go. The mac is now running very slow and iphoto and safari are not working. Can anyone help?
What version of Mac OS X?
What home page?
What browser? -
Upgraded to os7 and done my updates on the apps as they appear.. Any function to do with the iBook store is not working or visible. The purchase at the end of a sample book doesn't work either. Anyone have a solution?
Upgraded to os7 and done my updates on the apps as they appear.. Any function to do with the iBook store is not working or visible. The purchase at the end of a sample book doesn't work either. Anyone have a solution?
-
hi! I am having a problem with my dictation. It works fine with Greek but it does not work at all with English. Anyone knows why?
Have you changed the system voice to an English one in system preferences?
-
Help and support sends you in circles and does not help redeem a card with a code that does not work.
Well, they have a website, but here is a link to their information about unlocking iPhones.
http://www.att.com/esupport/article.jsp?sid=KB414532&cv=820#fbid=6d7EKuCF_dr
You may not qualify for an unlock though. -
Revision: 5019
Author: [email protected]
Date: 2009-02-19 13:17:21 -0800 (Thu, 19 Feb 2009)
Log Message:
ASDoc updates to indicate that some Halo containers do not work with the Spark equiv (ControlBar does not work with Spark Panel/AppControlBar does not work with Spark Application), and indicate that Canvas, Box, Tile, Panel have Spark equivs
QE Notes: None
Doc Notes: None
Bugs: -
Modified Paths:
flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Accordion.as
flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ApplicationControlBar.as
flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Box.as
flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Canvas.as
flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ControlBar.as
flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/HBox.as
flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Panel.as
flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/TabNavigator.as
flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Tile.as
flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/VBox.as
flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ViewStack.asHi DST
This is a great effort and gesture. thank you on behalf of all the newbies.
PJ -
you must have connected the Time Capsule with a router that does not work with my direct cable from my ISP
I tried to answer in your other post.. please stick to one thread ..
What method of internet do you have.. is this fibre install.. if so the TC should just plug in and use dhcp in router mode.. press and hold the reset and it will go back to router mode by default. -
hello i have a problem with my fingerprint id its not working anymore like before his not recognised my finger anymore why ?
I have had to periodically delete and re-enter my fingerprint. The last update (7.1) may have improved that. You can delete by going to Settings > Touch ID & Passcode, enter your passcode and then tap "Turn Passcode Off" and then go back to the same area, put a passcode back on and then a fingerprint.
-
Keep receiving "USB Over Current Notices" since updating to OSX 10.6.8. I have no devices plugged into my Imac and running everything wireless. SMC/PRAM resetting did not work. Does anyone have some advice or can help?
Hi Melissa,
Pretty strange, but...
Safe Boot, (holding Shift key down at bootup), run Disk Utility in Applications>Utilities, then highlight your drive, click on Repair Permissions, does it happen in Safe Mode? Reboot when it completes.
(Safe boot may stay on the gray radian for a long time, let it go, it's trying to repair the Hard Drive.) -
Command.text with ODBC escape sequence is not working in VC++. The Code, which written in VB is working perfectly. Is there any different syntax in VC++ or bug in
OLE DB provider ?. I am using OraOLEDB 8.1.7 version.
Thanks
Mani
VB Code
' Enable PLSQLRSet property
Cmd.Properties("PLSQLRSet") = True
' Stored Procedures returning resultsets must be called using the
' ODBC escape sequence for calling stored procedures.
Cmd.CommandText = "{CALL corpuser.GetCorpUserRec(?, ?)}"
Set Rst1 = Cmd.Execute
VC++ Code (while execute it is giving error )
pCommand->CommandText = "{CALL corpuser.GetCorpUserRec(?, ?)}";
pRs1 = pCommand->Execute(NULL,NULL,adCmdStoredProc);Hi
The odbc escape sequence for calling stored procedures works fine with VC++ also.
You can check the sampe application at following url :
http://otn.oracle.com/sample_code/tech/windows/ole_db/content.html
Hope this helps
Chandar -
I have a iPhone4S acquired in Portugal. I will be moving to the EQUATOR (South America). Whenever I have visited the country before, with other cellphones, they did not work (different band) forcing me to buy a local cellphone. Will my iPhone4S work there?
If it is unlocked it will work if you get a SIM from the carrier you will be using. Note that Apple does not and cannot unlock phones. Only the carrier it is presently locked to can unlock it.
-
Anyone had issues with on/off sleep button not working anymore
Anyone had issues with on/off sleep button not working anymore?
If there is Warranty or AppleCare make Genius reservation or set up Service and take or send to Apple for resolution. If no coverage, use virtual Lock Button, tap Settings App > General > Accessibility > Assistive Touch > ON > tap new white screen button > Device > Lock Screen. This can even turn OFF iPhone. To turn ON, connect iPhone to power, charger or USB of computer.
-
Zoom the screen with ctrl 2-Finger Swipe not working in Mavericks
I just bought a new Macbook Air for my wife (running Mavericks) and can't figure out why the Zoom the screen with ctrl 2-Finger Swipe is not working.
I can't find the setting anywhere.
I looked on my Macbook Pro running Mavericks (on which the zoom still works), but I cannot find the setting on that computer either.
Please help.
ThanksSystem Preferences---> Accessibility---> Zoom---> Use scroll gesture with modifier key to zoom. Select ctrl in the drop down menu.
It's a feature not normally turned on, so you might of had it turned on on your Mac before upgrading to Mavericks. And it just kept the setting.
KOT -
J2EE with Oracle ADF Exmple is not working
Hi Guys
I am using JDev 9.0.5.2 and just switch the new version
In "Developing an End-to-End Web Application Using the Default Technology Scope" example
there is a problem when i Click Edit Link, EditDepartment Page is not opening
also try to deploy this BrowseDepartment Page with OC4J Connection its not showing this page
looking fwdInitially i was running this Page from Flow Diagram now i did try Right-Click in Navigator window but the result is same EditDepartment is now working
there is no any error when i click on Edit Link its not working just blink screen and stay there
i think Edit code is
">Edit</a>
Maybe you are looking for
-
I installed a new SSD drive in my computer and now Adobe Creative Suite Web Premium says I don't have a license. I have license. It was very expensive. I am disabled now, and I need this software working. Adobe Acrobat has been a primary tool for acc
-
SAP GUI720 error 10061. Partenr 'sapdev:sapdp00' not reached
Hi all, The problem is I cannot connect and log on via SAPGUI. I am very new to SAP. I have just managed to install SAP ECC6.0 on my laptop running server 2008 service pack2. It created another user account "IDSAdmin" itself when the installation fin
-
hi OSB has by default provided validate action. It has syntax as "validate <xpath> in {variable} against {schema/wsdl}". Can i decide at schema/wsdl at run time? This scenario is similar with that of using a dynamic xquery. Regards, Swapnil Kharwadka
-
How can I get into the camera app when it's full of pictures
I want to delete some pictures from my daughter's ipad mini, but when I open the app, it says that the app can't take any more pictures because it's full. I just want to be able to access her photos so I can delete some. Help! I need to be able to
-
I just joined Verizon from AT&T
On my AT&T GS4, I was able to make a shortcut on a homepage to a contact. I bought the GS6 and I can seem to figure out how to it on this phone. Maybe the difference between the two company's phones. Does anyone have an idea???