Your SlideShare is downloading. ×
  • Like
F9 microkernel app development part 1
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

F9 microkernel app development part 1

  • 745 views
Published

Brief about app development of F9 Microkernel

Brief about app development of F9 Microkernel

Published in Technology , Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
745
On SlideShare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
12
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Part  1  :  App  Development   ben6   2014-­‐03-­‐10   F9-­‐Microkernel  
  • 2. Agenda   •  F9  user  mode  API  introduc?on   •  F9  API  for  basic  app   •  Analyzing  l4test  app   •  Your  first  f9  app  prac?ce   F9  
  • 3. F9  user  mode  API  introduc?on   •  Due  to  F9-­‐Microkernel  is  a  l4  kernel.   – Start  it  on  L4test.  It  is  basis  of  L4  kernel   •  Use  many  structure  Macro     – Find  user  app  entry  from  main()  
  • 4. reading  user/apps/pingpong   •  Learn  from  reading,  then  prac?ce   •  Entry:  main.c:  main()  
  • 5. •  F9  API  for  basic  app  (Ex:  pingpong)   •  DECLARE_USER(_?d,  _name,  _entry,  ...)   •  Create  2  Thread  By  L4_Msg  API   – with  Info  (stack  size  …)   •  Thread  1:  ping_thread   –  L4_Send  message  to  pong  thread   •  Thread  2:  pong_thread   –  L4_MsgStore  message  from  ping  thread      
  • 6. user_run?me.h:DECLARE_USER    31          user_fpage_t  _user_fpages_##_name[]      32                          __a^ribute__((sec?on(".user_data")))  =  {        33                  __VA_ARGS__      34                  {.base  =  0x0,  .size  =  0x0}        35          };        36          sta?c  void  _user_entry_##_name(void);        37          user_struct  _user_struct_##_name            38                          __a^ribute__((sec?on(".user_run?me")))  =  {          39                  .?d  =  _?d,            40                  .entry  =  _user_entry_##_name,          41                  .fpages  =  _user_fpages_##_name,      42                  .name  =  #_name,      43          };        44          sta?c  void  __USER_TEXT  _user_entry_##_name(void)          45          {          46                  _entry(&_user_struct_##_name);        47                  while  (1)          48                          L4_Sleep(L4_Never);      49          }  
  • 7. __USER_TEXT     #define  __USER_TEXT                      __a^ribute__  ((sec?on(".user_text")))   Func?on  uses  __USER_TEXT  put  into  .user_text  sec?on   which  defines  by  f9.ld  
  • 8. Expanded  apps/pingpong/main.c   gcc  -­‐E  main.c  -­‐I../../include  -­‐I../../../include  |  grep  -­‐v  "^$"    Expansion  let  you   easy  to  know  whole   code  structure  
  • 9. user_text:  f9.ld   __USER_TEXT   __ISR_VECTOR   INIT_HOOK(_hook,   _level)  
  • 10. L4_Msg   •  L4_Msg_t  msg;   •  L4_MsgClear   •  L4_MsgAppend   •  L4_MsgLoad   •  L4_Send    
  • 11. Agenda   •  F9  user  mode  API  introduc?on   •  F9  API  for  basic  app   •  Analyzing  l4test  app   •  Your  first  f9  app  prac?ce   F9  
  • 12. Analyzing  l4test  app   •  Code  reading   – Start  from  apps/l4test/main.c    
  • 13. Agenda   •  F9  user  mode  API  introduc?on   •  F9  API  for  basic  app   •  Analyzing  l4test  app   •  Your  first  f9  app  prac?ce   F9  
  • 14. Your  first  f9  app  hello  prac?ce   •  Wri?ng  f9  app  step  by  step   •  Clone  the  pingpong   •  Modify  the  name     •  Change  to  print  hello  in  3  ?mes  with  a  ?me   interval   •  Ques?on:  how  to  call  sleep?   – Reference     •  l4test/l4test.h:void  msec_sleep(L4_Word_t  msec);  
  • 15. user/include/l4io.h   int  vsnprinv(char  *str,  L4_Size_t  size,  const  char  *fmt,   va_list  ap);     int  snprinv(char  *str,  L4_Size_t  size,  const  char   *fmt,  ...);     int  prinv(const  char  *fmt,  ...);   void  putc(int  c);   int  getc(void);  
  • 16. Lab  2  Rocks  with  gpio   •  Use  ./include/plavorm/stm32f4/gpio.h   •  Control  the  led  on/off  via  menu  app   •  Hint:  Reference  the  apps/l4test/menu.c    
  • 17. Discussions   ?   F9  
  • 18. References   •  F9  Microkernel  source  code  and  introduc?on   •  GCC  Naked  A^ribute     •  ARM:  Memory  Model  of  Cortex  M4   •  Cortex™    -­‐M4  Devices    Generic  User  Guide  pdf     •  tu-­‐dresden's  fiasco  Microkernel   •  General-­‐purpose  Input/Output  (GPIO)