Lab1 - Serial Communication between ARM Development board and PC

Lab1 - Transfer data from arm development board to PC via Serial Communication

Abstract

In this project, we can display predefined student name and ID on console of hyper terminal using ARM S3C44BOX board. With the help of this project we can understand how we can transfer data from arm development board to PC via serial communication.

1. Introduction

Serial port of ARM board is used for data transfer from arm board to pc console. First we can load our program through parallel port of PC using JTEG and program is loaded in boot address of Flash ROM and then using serial communication data is transferred to PC and we can see the data on pc console using hyper terminal software.

2. Methodology

  • For accomplishment of this project I divided my task into several parts.
  • First I made a program with the help of 44btest.c program and then after debugging of my program by removing few errors then object file is generated. Then using fromelf command binary file of my program is generated. I load that file using parallel port of pc and jtag. After successful loading of my program in flash and pressing reset switch data that is my name and student ID is displayed on pc console using hyper terminal.

3. Implementation

    • For implementation of my project I used CTI Development Board Distribution CD to install the Arm SDTv2.5 software for debug my program.
    • In this debugger first of all I made new project and save it into specific directory. Then I add required source files and include files by click on Project -> Add files to project.
    • Then in the .c file I write the program for transfer my data (name and SID) serially to PC. After making error free program I debug my program object file and .axf file is generated. Then using fromelf command in dos prompt binary file of my program is generated. Here Uart_printf command is used to print the required details on hyper terminal.
    • Then copy the flash folder from CD into ARM251 folder and copy that binary file to that flash folder. Then edit the batch file named “F” in flash folder and write the name of binary file in that file. Then attach the parallel port of pc to board using JTEG and then run the batch file so burning of flash memory is begin
    • After successful burning of flash memory remove parallel port and attach serial port to the board and press reset switch so required data(Name and Student ID) is displayed on pc console using hyper terminal.

4. Testing and Verification

The program is verified using hyper terminal. The following steps are taken to test the data display on hyper terminal.

    • Debug and compile the program to get the binary file of program.
    • Load that binary file in flash memory.
    • Connect the serial port of PC to the ARM board
    • Open the hyper terminal and then set the baud rate 115200 and chose flow control as none and other information is as it is.
    • Then press reset switch of board or press enter key of keyboard and verify the output on hyper terminal console which is shown in Fig. 3.

Fig 3 Output on Hyper terminal

5. Conclusion

This project provides good understanding of data transfer from board to pc. This project is a good learning experience of how to use ARM board and it will useful in future to make more complex project.

6. References

[1] H. Li, “Author Guidelines for CMPE 146/242 Project Report”, Lecture Notes of CMPE 146/242, Computer Engineering Department, 2007, pp. 1.

[2] CTI Development Board Distribution CD, CTI Plus Corporation, Palo Alto.

7. Appendix

.

7.1 S3C44BOX Block Diagram

7.2 Program Code

//*******************************
//Coaded By: ABC
//Date: MM/DD/YYYY
//Version: 1.0
//Status: Complete
//Discreption: This program displays predefined data in program to pc console
//*******************************
#include <string.h>
#include "..\inc\option.h"
#include "..\inc\44b.h"
#include "..\inc\44blib.h"
#include "..\inc\def.h"
void Isr_Init(void);
void HaltUndef(void);
void HaltSwi(void);
void HaltPabort(void);
void HaltDabort(void);
void Main(void)
{
  rSYSCFG=SYSCFG_8KB;
#if (PLLON==1)
    ChangePllValue(PLL_M,PLL_P,PLL_S);
#endif
 Isr_Init();
 Port_Init();
 Uart_Init(0,115200);
 Uart_Select(0);
 Uart_Printf("\n\t STUDENT NAME:- ABC ");
 Uart_Printf("\n\t STUDENT ID:- 001234567 \n");
}
void Isr_Init(void)
{
    U32 i;
    pISR_UNDEF=(unsigned)HaltUndef;
    pISR_SWI  =(unsigned)HaltSwi;
    pISR_PABORT=(unsigned)HaltPabort;
    pISR_DABORT=(unsigned)HaltDabort;
    for(i=_RAM_STARTADDRESS;i<(_RAM_STARTADDRESS+0x20);i+=4)
    {
      *((volatile unsigned *)i)=0xEA000000+0x1FFE;
   }
    //rINTCON=0x1;                    // Vectored Int. IRQ enable,FIQ disable
    rINTCON=0x5;                      // Non-vectored,IRQ enable,FIQ disable
    rINTMOD=0x0;                      // All=IRQ mode
    rINTMSK|=BIT_GLOBAL|BIT_EINT3;    // All interrupt is masked.
}
void HaltUndef(void)
{
 Uart_Printf("Undefined instruction exception!!!\n");
while(1);
}
void HaltSwi(void)
{
 Uart_Printf("SWI exception!!!\n");
 while(1);
}
void HaltPabort(void)
{
 Uart_Printf("Pabort exception!!!\n");
  while(1);
}
void HaltDabort(void)
{
 Uart_Printf("Dabort exception!!!\n");
 while(1);
}