University Programs Knowledge Base

cancel
Showing results for 
Search instead for 
Did you mean: 

University Programs Knowledge Base

Discussions

INTRODUCTION Hi everyone, Making/Developing/Porting a Bootloader is a tedious task for newbies (even for professionals) and inexperienced hobbyists who wish to use them on their custom hardware for rapid prototyping. After searching a lot on different forums I came to a conclusion that I cant develop a bootloader just like that so my next option was porting ,that too wasnt easy if you are going with old bootloaders with limited support. I then found a very easy and efficient way of rapid software development platform that can be used on almost any IDE (Keil,Codewarrior,KDS,etc.) and can be used to develop softwares like USB MSD Bootloaders,Serial Bootloaders and other applications for almost all Freedom Development Boards ,Freescale Kinetis MCUs (on a Custom Development Board ) with minimal ARM Programming Knowledge, which is perfect for newbies like me who are just starting with ARM Development using freescale or other boards.See Welcome to the homepage of the µTasker operating system with integrated TCP/IP stack, USB and target device simulator Now my project was to make custom board using MK22DX256VLF5 (48 LQFP) MCU ,my board is a rather a simple one using basic filtering circuits for powering the MCU and almost all the pinouts given as hardware pins on the dev board.Somehow I was able to flash my first blink code using Keil IDE using the OpenSDA circuitry of FRDM-KL25Z (J-11 trace cut ) with CMSIS-DAP firmware (OpenSDA app ) loaded on to it using SWD Programming. With the steps mentioned below I'll show you how to port a Mass Storage Device (MSD) Bootloader using uTasker project from scratch. REQUIREMENTS Programmer(Hardware) or Emulated Programmer(OpenSDA apps): Segger Jlink, P&E Multilink ,OpenSDA Emulators (Jlink-SDA, CMSIS-DAP,USBDM ) IDE :Keil,Codewarrior, Kinetis Design Studio etc. (I prefer CW 10.6 ) Target MCU: Choose any MCU between Kinetis, Coldfire V2, STM32  (I am using Freescale Kinetis MK22DX256VLF5 ,48 LQFP ) refer - http://www.utasker.com/ PROCEDURE 1. Lets start by downloading the uTasker project/framwork (for Kinetis ) from µTasker Kinetis Developer's Page . Then extract and copy the folder to your CW workspace ,import the project to CodeWarrior IDE, It should look like this . (I am using version 14-9-2015)   2 .Next Select "uTaskerSerialLoader_Flash" from the Five build configurations (refer http://www.utasker.com/docs/uTasker/uTaskerSerialLoader.PDF  ).uTaskerBM_Loader is described in http://www.utasker.com/docs/uTasker/uTasker_BM_Loader.pdf This is a very small loader alternative that works together with an initial application. uTaskerV1.4_BM_FLASH is the application to build so that it can be loaded to a loader (including the USB-MSD one). uTaskerV1.4 is a 'stand-alone' version of the application that doesn't work together with a loader (and doesn't need a loader).If you want to build application to load using the USB-MSD loader you need to use uTaskerV1.4_BM_FLASH. after that find the files config.h and ap_hw_kinetis.h.These files define the type of MCU you use. 3.In config.h Select your board or MCU type or the closest MCU resembling the architecture of your own MCU. My MCU  MK22DX256VLF5 was not there so with a little help from mjbcswitzerland  I chose TWR_K21D50M Board settings as TWR-K21D50M module is a development board for the Freescale Kinetis K11 , K12 , K21 and K22 MCUs. (Note : Be sure to remove or comment any other defined boards ) After Selecting the Board/MCU scroll down to find USB_INTERFACE and USB_MSD_LOADER and make sure that these two are defined (not commented ).This is necessary to enable USB enumeration as Mass storage device. Also comment the following if already defined : HID_LOADER KBOOT_HID_LOADER USB_MSD_HOST This is necessary as we are using our Bootloader in MSD Device Mode not in MSD Host Mode. Also we arent using HID_LOADER and KBOOT. Now open  ap_hw_kinetis.h and Find your selected MCU (in my case its TWR_K21D50M ) So, Find the String "TWR_K21D50M" (or whatever your MCU is ) and see if the follwing lines are defined. #define OSC_LOW_GAIN_MODE #define CRYSTAL_FREQUENCY    8000000  #define _EXTERNAL_CLOCK      CRYSTAL_FREQUENCY #define CLOCK_DIV            4                                      or    #if(..........)         #define CLOCK_MUL        48                                            #define SYSTEM_CLOCK_DIVIDE 2                                      #else         #define CLOCK_MUL        24 #endif     #define USB_CLOCK_GENERATED_INTERNALLY Here comes an integral part of USB MSD Bootloading/Programming.You must be wondering about CRYSTAL_FREQUENCY  8000000 and  CLOCK_DIV   4  .This is the frequency of an external crystal oscillator  (8mhz) connected between EXTAL0 and XTAL0 pins of the Target MCU.If your MCU has an internal oscillator then check whether the latter is defined. refer- https://cache.freescale.com/files/microcontrollers/doc/app_note/AN4905.pdf          http://www.utasker.com/kinetis/MCG.html There are two ways to be able to use USB: 1. Use a crystal between EXTAL0 and XTAL0 - usually 8MHz is used. (with or without load capacitor -both worked for me ) 2. Use a 48MHz oscillator on the USB-CLKIN pin. First one is easier and it worked for me.Since my MCU doesnt have an internal oscillator I have used and External 8Mhz crystal. If you want to use a 16Mhz crystal then just make the following changes : #define CRYSTAL_FREQUENCY    8000000 #define _EXTERNAL_CLOCK      CRYSTAL_FREQUENCY #define CLOCK_DIV            4                                 TO #define CRYSTAL_FREQUENCY    16000000 #define _EXTERNAL_CLOCK      CRYSTAL_FREQUENCY #define CLOCK_DIV            8 Note: The CLOCK_DIV should be such that it prescales the crystal frequency to range of 2-4MHz. Here is the clocking diagram of My MCU.The next diagram shows an oscillator crystal connected externally to my dev board. Next search for "PIN_COUNT" under your corresponding MCU/Board (mine is TWR_K21D50M).My MCU is 48 LQFP with 256kb flash and 32kb SRAM (you have to change them according to your MCU ).So I have changed the following lines                              from   #define PIN_COUNT           PIN_COUNT_121_PIN                         #define SIZE_OF_FLASH       (512 * 1024)                          #define SIZE_OF_RAM          (64 * 1024)                              to   #define PIN_COUNT           PIN_COUNT_48_PIN                      #define SIZE_OF_FLASH       (256 * 1024)                              #define SIZE_OF_RAM          (32 * 1024)  Next if you search for your MCU/Board (in this case TWR_K21D50M) ,you will find this line : #define UART2_ON_E This defines the alternative port for UART2,since many boards doesnt have PORTE ,it can be chaned to other ports. [its not important though] Note : When building the serial loader for a device with small RAM size reduce the define #define TX_BUFFER_SIZE (5512) to 512 bytes so the buffer can be allocated (the large size was used only for some debugging output on a larger device) [loader version : 14.9.2015] Now search for the String "BLINK_LED" under your corresponding MCU/Board ( mine is TWR_K21D50M ) .The uTasker Bootloader has a special function ,whenever it is in MSD/LOADER mode it blinks a test LED on the board.This is not important but it can be used for debugging purposes.I have a test LED on my board at PORTB16 .You can also specify hardare pins to force bootloader mode and to stop watchdog timer if you pull SWITCH_3 and SWITCH_2 down to ground respectively.I am setting SWITCH_3 and SWITCH_2 as PORTD7 and PORTD6 respectively. Now on the toolbars go to Project > Properties > C/C++ Build > Settings > Tool Settings > Target Processor :Change it to your MCU type (mine is cortex-m4 ) .Next go to Linker >General and change the linker script file to match your MCU's flash,RAM,Type.I have set mine to K_256_32.ld (Kinetis K type processor with 256kb flash and 32 kb RAM) Apply your changes.Now you are ready to go. 4.  Build your project under SerialLoader_FLASH configuration .If there are no compilation errors then you have done it! (if there are then recheck everything with this guide ) Now Click the Flash programmer icon a and Select Flash File to Target. (if your not getting the icon switch to "DEBUG" perspective view ) Now you may choose your Programmer (or emulated programmer )[connection tab] ,select the correct Flash configuration file ,then browse for the binary file that has been generated under C:\Users\<computer user>\workspace\Kinetis_14-9-2015\Applications\uTaskerSerialBoot\KinetisCodeWarrior\uTaskerSerialBoot_FLASH\uTaskerSerialBoot.bin and Click on "Erase and Program". You may skip Step 5 and go to Step 6. 5.I am using the OpenSDA circuitry of my FRDM-KL25Z (J-11 trace cut ) as a programmer using J-link OpenSDA app. Download the app from SEGGER - The Embedded Experts for RTOS and Middleware, Debug Probes and Production Programmers - OpenSDA / OpenSDA V2 depending on your OpenSDA version (FRDM KL25Z has OpenSDAv1). Refer - Using the Freedom Board as SWD Programmer | MCU on Eclipse 5.1.First Enter bootloader mode and Flash the Jlink sda app into it.Connect the SWD wires from the board to your  Target MCU/Board ,also connect the target board        to the external oscillator.Also connect the FRDM's OpenSDA through USB. (A drive with the name JLINK Should come )                                          5.2. Go to Flash File to target and under connections tab click new. give any name and click new under Target Tab.Then select the target type (your target MCU ,mine is                      K22DX256M5).Then check Execute Reset under Initialization Tab. Click finish.    Now you'll get the option to select connection type ,then choose J-Link/J-Trace for ARM and change the Debug port interface to SWD .If you get the error :connection name is not        unique then just change the name (I have used jlink1).Click Finish.     Now I have set up my connections so I can flash the MCU with Jlink app on my OpenSDA circuitry. 6. Now to verify USB Enumeration of your Custom Board ,connect it to PC using USB and you should get a drive with the name UPLOAD_DISK.
View full article
2013 Global Freescale Cup Participant: Brazil Car Specs: -Freescale "Bolero" MPC5604B 32-bit MCU
View full article
2013 Global Freescale Cup Participant from Mexico Car Specs: -Freescale "Bolero" TRK-MPC5604B
View full article
This is the 8th year for the China national finals of Freescale Cup intelligent car racing.  In parallel to this years China regional we are hosting the champion teams from regions around the world in a winner take all racing showdown. Today kicked off day one of the event which is mostly practice.   But first, a little international team building and a tour to Sun Island in Harbin, China. (Photo courtesy of Peter Fang) (Photo courtesy of DamarisOchoa) Followed by some down to business practice where we had our first glimpse of all the teams.   All the worldwide teams look very strong and should be a very competitive match-up. (Photo courtesy of DamarisOchoa) If you are at the Global Freescale Cup 2013  add your pictures in the comments section below!!
View full article
The Freescale Cup East China 2013 challenge video 2 After formal competition finished in East China, we gave a challenge and asked teams to try a hill with >30 angle, some cars successes
View full article
After formal competition finished in East China, we gave a challenge and asked teams to try a hill with >30 angle, some cars successes
View full article
                                                       Robô Explorador      O sistema de investigação feita por robôs através da análise de imagens capturadas está sendo utilizado nas pequenas e grandes empresas. Através da análise de imagens, é possível verificar se um produto está com defeito ou não. Dependendo da imagem, ou até mesmo se a peça estiver em mãos, um operador poderá analisar e qualificar como peça boa, mas através da conversão de uma figura em matriz binária, será possível encontrar um erro. Desta forma o produto final poderá ser adquirido pelo consumidor com mais qualidade e com custo reduzido.      Para sistemas de segurança, é possível analisar um espaço, fotografar o local e saber se existe perigo para o operador, ou até mesmo localizar pessoas em situações de risco de vida.
View full article
Thanks Team Jolt @ UC Berkeley for this awesome first-person perspective of the Freescale Cup car going around the track!
View full article
Congratulations to all the East Coast teams and to UC-Berkeley for the overall fastest car in the USA!  More photos/videos from the event. West vs. East Winner: Jolt - UC-Berekley 17:35 East Coast Teams: First Place: Relativistic Robotic Racers - University of Rhode Island - 22.04 seconds Second Place: Vulcar - California University of Pennsylvania - 25.15 seconds Third Place: Temple Made - Temple University - 25.72 seconds See complete results
View full article
Congratulations to all teams of the inaugural West Coast Freescale Cup event!  Our three fastest times, covering a total distance of 147 feet.  Full collection of event photos and videos!! Top 3 Teams: * First Place - UC Berkeley - 21.27 seconds Second Place - UC Davis - 27.92 seconds Third Place -  UC Davis - 28.00 seconds
View full article
The Embedded World trade show is a European reference for Embedded Technologies. The exhibition and conference continues to grow and attract exhibitors and attendees from all regions of EMEA. Freescale has a large demonstration booth in Hall 4A and, for the 2nd year in a row, we also have a Freescale University Programs presentation area in the entrance all, right outside Hall 4A. The 25m2 demo space for the University Programs this year include robotics and automotive demonstrations from the following Universities: Technical University of Munich: eCARus electric buggy featuring S12 and Qorivva CAN & FlexRay automotive networks and i.MX display University of Applied Sciences Munich with K60 Tower kits running Pong tennis game University of Applied Sciences Ingolstadt with a MPC5604B 3 dimensional camera stabilization system mounted on a 6-copter drone University of Applied Sciences Deggendorf with Kinetis Tower mini-robots University of Applied Sciences Landshut with ColdFire FSLBOT University of Applied Sciences Nuremberg with a ROS communication robotic arm demo ported on i.MX535 Technical University of Ostrava with a search/rescue robot featuring i.MX31 HMI interface on remote control and HCS12 radar control system In addition we have a video presentation of the Freescale Cup.
View full article
One of the finalist vehicles for the Freescale Cup China 2012 event. In 2012, we switched the black lines to the outer edges for a new challenge twist for the students to adapt to.
View full article
Freescale Cup China - Two Wheel Self Balancing Challenge 2012 In China they have another tier of competition in which the cars must complete the track autonomously while balancing on the rear wheels. For this challenge they use a charged wire in the track for which to sense and navigate the vehicle by. Really cool!
View full article
Overview This document has links to videos to give tutorials on how to getting started *from scratch* with the freedom board.    In these tutorials we build projects with bare metal code to see how things work!   It includes the basics on how to get clocks running,  lights blinking and interrupts firing *from scratch*. For more code/peripheral examples that use a "bare metal" approach,  check out the page on the FRDM-TFC board. ERRATA!!!   While working with a large number of Freedom boards in a course,  it was observed that the InitClockRoutines would *sometimes* not work.    *Some* of the crystals on the freedom boards do NOT like "HIGH_GAIN" mode.   The new code is uploaded to this page but you could also change the code yourself:   pll_init(8000000, HIGH_GAIN, CRYSTAL, 4, 24, MCGOUT); to   pll_init(8000000, LOW_POWER, CRYSTAL, 4, 24, MCGOUT); Projects From Scratch for the Freedom Board with Codewarrior 10.3 Projects From Scratch - Part 2 - Importing other projects Using the Freescale Header Files and Blinking the LED Source code for video (Codewarrior 10.3) is in the attached files at the bottom of this document. Clock Distribution Source Code for the Clock Distribution video is in the attached files at the bottom of this document. Interrupts Part 1 - Background Interrupts Part 2 - ARM Systick Timer Source Code for the ARM Systick Timer video is in the attached files at the bottom of this document. Interrupts Part 3 - TPM (Timer Pulse Width Modulator) Overflow Source Code for the TPM Overflow Interrupts video is in the attached files at the bottom of this document
View full article
Clip provided by: Hanyang University Korea One of the challenges of the Korea event is to have the cars self-park. This car is using the S12XE chipset.
View full article