Nested Vectored Interrupt Controller - embedded

I been struggling with NVIC, why it is used? and how it is used?
In my project I'm using
NVIC_IntDisable(NVIC_SSP0);
NVIC_ClrPend(NVIC_PIO_0);
NVIC_IntPri(NVIC_PIO_0, 17);
NVIC_IntEnable(NVIC_PIO_0);
These are all defined in the system.c can anyone explain me why these are used what the use perticular commands. Please mention any good matrial that I can reffer.
Thank you.

NVIC is a Nested Vectored Interrupt Controller (similar to PIC on x86 PC).
You can get more info on ARM website
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dai0179b/ar01s01s01.html and also in specific chip datasheets and ARM manuals for the sub-architecture.

Related

programming nRF51822 and integrating it on a PCB

I have a basic firmware question. I am looking to program a nRF51822 IC and integrate it on my own PCB. The evaluation kit seems to already have the IC soldered on it. Is it a way I can only program the nRF51822 and getting it ready to use elsewhere?
Get yourself one of these J-LINK LITE CortexM:
and hook up your connection header like this to your microcontroller (SWDIO, SWCLK, VCC and GND are the only ones needed):
.
Then, use Keil or nRFGo Studio to program your device.
You don't need J-Link at all. Any STLinkv2 board will work, like STM32 dev boards. But even nicer are these cheap Chinese programmers: http://www.aliexpress.com/item/FREE-SHIPPING-ST-Link-V2-stlink-mini-STM8STM32-STLINK-simulator-download-programming-With-Cover/32247200104.html
All you need to do is connect the Vcc, Ground, SDIO, and SWDCLK lines from your board/chip to the programmer, so make sure those pins are broken out and easy to get to.
There are some good instructions on how to do that here: https://github.com/RIOT-OS/RIOT/wiki/Board:-yunjia-nrf51822
I've built Linux workstations for workers on assembly lines to use with this method, and it just loops over and over for new boards. So they don't even need to touch the PC, they can just place a board on the jig or connect a header and it's all automatic.
You will need a programming device, such as a Segger Jlink. The eval kit has an on-board Segger programmer on it (that big chip with the Segger sticker on it).
I'm working through this process myself at the moment. I read somewhere that some people were successful at 'hacking' the eval kit, to bring the SWDIO and SWCLK over to their custom board but that really isn't the right way to go about it.
Instead, purchase an actual programmer and put a programming header on your custom circuit board.
While I am also still in the research phase here as well, it looks like there are 4-5 pins to connect from the programmer to your custom target board. The nRF documentation seems to be rather lacking in the definition of the programming setup, but look under the debugging category and take a look at Segger documentation as well.
If going into mass production there are ways to pre-program the chip before assembly, but I haven't had a chance to learn about that just yet.

Understanding USB descriptors in relation to the LUFA library

Can someone please explain how the LUFA library handles USB descriptors? I can't seem to trace the descriptors in any of the examples given back to the source of the library. How do they work? Are they programmed into flash memory at a given location?
Thanks,
George
Descriptors are struct's defined in the LUFA library. You find them in
/drivers/USB/Core/StdDescriptors.h
which is included via the "master include file" /Drivers/USB/USB.h
The user application makes use of these struct's
Please consult the LUFA library documentation and look up "Descriptor" in the search box or expand the File List subtree. This will guide you to info what is defined and where. Also look up the main USB function void USB_USBTask(void).
Another good resource about the basics is this.

PIC board with a webserver

Can anyone please suggest a small PIC board which has a web server built into it and can be programmed to handle ftp connections?
Some members of the PIC32 family, such as the PIC32MX675F256H and PIC32MX795F512L include an integrated Ethernet interface. An evaluation board for the PIC32MX795 is available: DM320004 (see picture below).
You can also add an Ethernet controller and use Microchip's free TCP/IP stack with their PIC18, PIC24, dsPIC and PIC32 families.
I would suggest http://www.modtronix.com/. They have a number of expandable PIC boards including Ethernet/web-server.
I know this is an old post, but I stumbled onto it, maybe others will. One pretty cool project is the UConTroll. It's a PIC24 based WiFi product that has a Web interface. More info here.

Where can I find information about programming the TI TMS320C64xx DMA controller

I need to do some simple memory transfer using this DSP, but I am unable to find any documentation about the DMA functions. I am using C with code composer 3.3
OK in a flash of inspiration I Googled for the one DMA specific function I found in the code, and found this and TMS320C645x DSP Enhanced DMA (EDMA3) Controller user Guide
It seems to me that Texas Instruments gives quite some documentation on these processors. For instance, the TMS320C6418 data sheet. A list of all TMS320C64xx controllers is listed here (click on the part number to go to the reference material).
I'm not well acquainted with the subject matter, just tried to locate the information for you. If this isn't providing the information you're after, please let me know.
EDIT: added links below for ease of reference for later visitors (they have been mentioned in the comments):
List of published documents for these and other related Texas Instruments IC's: Digital Signal Processors & ARM Microprocessors
General reference guide for TMS320C64xx processors: TMS320C64x+ DSP Megamodule Reference Guide
Somewhat related, as an example of programming: video processing with the TMS320C64xx processors.
See also the answer provided by the OP himself, which shows two additional helpful documents.

Arm Board Bring Up

Can anybody tell me where I can find information related to How to Bringup any arm board? I am looking for an overview as I am novice in ARM related stuffs. Any link/document will do ...It will be gr8 help if i can look for a case-study
any arm based board can be considered..I am looking for just a case study...simple in few steps??
Every single ARM "board" will be different. Read the datasheet for the ARM chip you have, that should have a section near the start about booting. Also, read the datasheet about your board, as it made have flash/boot loaders on there. If there are no loaders on the board, you'll have to either set the jumpers for the ARM (if that type supoprts it) to read from external rom, or JTAG the initial boot code into it.
Basically: Read the datasheets. Programming a device like an ARM isn't your usual compile/run stratergy like most software, especially not in the first stage.
edit:
If you don't even have a board yet, try going for this one:
http://beagleboard.org/
It has and ARM on it (as well as a decent GPU).
Check the DLP-2232PB-G evaluation kit from FTDI. Looks great for newbies trying to get into microcontrollers, and it comes with everything you need. It's a PIC controller - not an ARM controller, but the easiest starting point that I've seen... and same basic methods of development.
I would start with any documentation the IC manufacturer may have on "getting started".
http://free-electrons.com/doc/porting-kernel.odp
This link gives a good overview of the bringup of the board with a CPU for which the linux support package is available.
Linux sources in arch/arm have mach-* which are cpus supported by Linux Kernel.
With in the mach-* dir, there are some board specific files that are board specific BSPs.
You can take the process elucidated in this article and try using in your case.
Check out the ok6410-h at http://www.arm9board.net/sel/prddetail.aspx?id=348&pid=200
Quit a nice kicking-start kit coming with everyting you would ever need: documentations, source code, example programs.
recommendable for both newbies and experienced.