Sdk For Firmware Development


Published on

This presentation discusses the need and design of an SDK for firmware development.

  • Be the first to comment

  • Be the first to like this

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Sdk For Firmware Development

  1. 1. SDK For Firmware Development<br />Ramesh Prasad<br /><br />
  2. 2. Outline<br />Introduction<br />Need for SDK<br />Software Architecture<br />Benefits of SDK<br />
  3. 3. Introduction<br />Software Development Kit (SDK) is a set of APIs which allow the programmer to develop application for a particular platform<br />SDK simplifies the development, as the low level details are abstracted from the programmer<br />SDK provides APIs to easily access, manage and transact with the hardware<br />
  4. 4. Need For SDK<br />Software complexity is increasing while the time to market is shrinking<br />Managing budget and schedule is becoming increasingly difficult<br />Software reuse is the only way to meet these challenges<br />Software reuse needs a methodological approach in embedded world as there is a wide variety of hardware and peripherals<br />
  5. 5. Software Architecture - Usage<br />SDK is a static library which can be linked to the application code<br />Compiler/<br />Linker<br />.lib<br />Application<br />Code<br />Executable<br />
  6. 6. Software Architecture - Layering<br />Application<br />API Wrapper Layer<br />Driver Abstraction Layer<br />Device Drivers<br />CMSIS Porting layer/Silicon Vendor Library Layer<br />Hardware Platform<br />
  7. 7. Software Architecture – Hardware Platform<br />
  8. 8. Software Architecture – SDK Structure<br />The following is the structure of the SDK-<br />1. Boards<br /> Contains the board specific source code, library and project for the SDK project.<br />i. Common : Source and include files common to the different variants of the board.<br />ii. Board_rev: Code specific to the board and revision<br />2. Docs<br /> Contains the documents.<br />3. inc<br /> SDK header files.<br />4. Libs<br />SDK library.<br />5. Samples<br /> Various sample code for different peripherals.<br />6. stm32f10x_stdperiph_lib<br />Standard peripheral library provided by ST.<br />7. Readme.txt<br /> This document.<br />8. change_log.txt<br /> Revision and details of the SDK.<br />9. Test<br />Test routine for the SDK.<br />
  9. 9. Software Architecture – SDK Headers<br />Platform.h<br />Data_types.h<br />Buzzer.h<br />LCD.h<br />Battery_monitor.h<br />Gsm.h<br />GPIO.h<br />I2C_EEPROM.h<br />LED.h<br /><ul><li>Keypad.h
  10. 10. Pc_comm.h
  11. 11. Printer.h
  12. 12. RTC.h
  13. 13. Smart_card.h
  14. 14. SPI_Flash.h
  15. 15. System_init.h
  16. 16. Timer.h
  17. 17. Utils.h</li></li></ul><li>Software Architecture – GSM.h<br />#ifndef __GSM_H<br />#define __GSM_H<br />#ifdef __GSM_C<br />#define GSM_SCOPE<br />#else<br />#define GSM_SCOPE extern<br />#endif<br />typedefstruct /* GPRS Usage Structure */<br />{<br /> u8 APN[31];<br /> u8 USER[11];<br /> u8 PASSWD[11];<br /> u8 IP_ADDR[16];<br /> u8 PORT[6];<br />} GPRS_DETAILS;<br />GSM_SCOPE GPRS_DETAILS IP_Details;<br />GSM_SCOPE void Init_GSM(void);<br />GSM_SCOPE void Set_GSM_Reset(void);<br />GSM_SCOPE void GSM_Tmr_Delay(u32 M_Sec);<br />GSM_SCOPE void Send_DataTo_GSM(u8 Str[]);<br />GSM_SCOPE s8 Setup_GSM_Modem(void);<br />GSM_SCOPE s8 Check_GPRSNwk(void);<br />GSM_SCOPE s8 Check_Network(void);<br />GSM_SCOPE s8 Send_SMS(s8 Num[], s8 Msg[]);<br />GSM_SCOPE s8 Establish_Connection(GPRS_DETAILS IP_Details);<br />GSM_SCOPE s8 Connect_To_TCP_UDP(u8 Udp_Tcp_Id, GPRS_DETAILS IP_Details, u8 *GPRS_Test_Msg);<br />#endif<br />
  18. 18. Software Architecture – GSM<br />Application<br />API Wrapper Layer<br />Driver Abstraction Layer<br />Device Driver<br />Device Driver<br />Device Driver<br />GSM Module 1<br />GSM Module 2<br />GSM Module 3<br />
  19. 19. Software Architecture – utils.h<br />#ifndef __UTILS_H<br />#define __UTILS_H<br />#include "platform.h"<br />//32 bit utility functions<br />#ifdef __UTILS_C<br />#define UTILS_SCOPE<br />#else<br />#define UTILS_SCOPE extern<br />#endif<br />UTILS_SCOPE void Delay(vu32 nCount);<br />UTILS_SCOPE void Clrbuf(u8 *Str, u32 Len);<br />UTILS_SCOPE float AtoF(s8 *str);<br />UTILS_SCOPE u32 AtoI( u8 *str);<br />UTILS_SCOPE void ItoA( const unsigned long value, unsigned char *str);<br />UTILS_SCOPE void Rev_String(u8 *str);<br />UTILS_SCOPE u16 Strlen( const u8 *str);<br />UTILS_SCOPE u8 Rev_ByteBits(u8 byte);<br />UTILS_SCOPE u32 Rev_WordBits(u32 byte);<br />UTILS_SCOPE u16 Rev_HalfWordBits(u16 byte);<br />UTILS_SCOPE u8 *strset(u8 *s, u16 ch);<br />UTILS_SCOPE u8 *Strnset(u8 *str, u16 ch, u16 n);<br />UTILS_SCOPE u8 *Strcpy(u8 *dest, const u8 *src);<br />UTILS_SCOPE u8 *Strcat(u8 *dest, const u8 *src);<br />UTILS_SCOPE u8 *Strncpy(u8 *dest, const u8 *src, u16 maxlen);<br />UTILS_SCOPE s8 Strcmp(const u8 *s1, const u8 *s2);<br />UTILS_SCOPE s8 Strncmp( const u8 *str1, const u8 *str2, u16 nob);<br />#endif<br />
  20. 20. Benefits of SDK<br />Code reusability<br />Small learning curve for application developer<br />Easy migration to a different processor and/or peripheral<br />Code security<br />Abstraction of low level details<br />Ease of development for third party <br />Ease of upgrade<br />
  21. 21. Thank You<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.