ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 14
  1. #1
    2007/08/21
    تهران
    843
    7

    نوشتن بوت لودر دوم و پگريت براي lpc1768

    با سلام
    مدتي است كه يك پروژه با lpc1768 را كار مي كنم .
    براي اپگريت آن از طربق پورت com با نرم افزار خودم اومدم اين تئوري را پيدا كردم :
    يك برنامه ساده نوشتم كه و در فضاي حافظه از يكتور 0 تا دو يا 3 سكتور برنامه نوشتم .
    در ابن برنامه پورتها عملا هيچ ربطي با پروژه اصلي نداره فقط پورت com رو راه اندازي مي كنم و در صورتيكه به مدت چند ثانيه هيچ ديتايي از پورت نگيرم به برنامه اپليكشن اصلي بروم . اين برنامه اصلي در سكتورهاي بعدي نوشته مي شود مثلا از شكترو 10 به بعد .

    در بوت لودر خودم اگه ديتاي معتبري بياد يا بفهمم كه با ريست دريافت اپليكشن بالا آمده ام برناه دريافتي از پورت سريال را در سكتورها به ترتيب مي ريزم .

    برنامه دريافتي چه در اپليكشن و چه در بوت لودر( دفعه اولي كه اصلا اپليكشن وجود ندارد روي برد ) پس از دريافت در حافظه جانبي كه روي بردم دارم قرار مي گيرد و پس از فهميدن اينكه ديتاها كامل دريافت شده در همان حافظه جانبي مجلي را علامت گذاري مي كنم و ريست مي كنم تا با بوت لودر خودم بالا بيايم
    در بوت لودر به اين صورت مي فهمم كه بايد پگريت كنم .
    پگريت هم با توابع iap صورت مي پذيرد .

    وقتي كه مي نويسم هم دقيقا درست در همان فضا قرار مي گيرد ( با فلش مجيك چك كردم و ديدم با فايل باينري دقيقا درسته )
    ولي برنامه اپليكشن در اين حالت كار نمي كنه ( بدون بوت لودر درست كار مي كرد )
    من پروژه را با iar نوشتم و فكر كنم مشكل در درست كردن فايل اپلبكشن براي آدرس خاص است



  2. #2
    2007/08/21
    تهران
    843
    7

    پاسخ : نوشتن بوت لودر دوم و پگريت براي lpc1768

    اين برنامه بوت لودر است كه با فلش مجيك پرگرام مي كنم و ضاهرا درست كار مي كنه :
    کد:
    #include <NXP/iolpc1768.h> #include "lpc17xx_nvic.h" #include "core_cm3.h" #include "lpc17xx_gpio.h" #include "defines.h" #include "func.h" #include "externs.h" #include "pw700_lib.h" BYTE connect_f,led_line_co; unsigned long t_try_connect,t_connect_f,t_startup; USARTDataType USART1; USARTDataType USART2; USARTDataType USART3; USARTDataType USART0; BYTE b[8],e[8],d[8]; BYTE time_flag,j1,k1,lux,speed_; unsigned char RXBuf[500]; unsigned int i,l,t_dis,t_dis1,t_dis2,t_dis3,t_alive,t_send_active,j; unsigned char cheshm,loop,de1,de2,de3,effect_num,mode1=0,mode2=0,mode3=0,att1,att2,att3; unsigned int t_effect1,t_effect2,t_effect3,txt_len; BYTE timer0_counter = 0; BYTE timer1_counter = 0; unsigned long TIME_INTERVAL0=0xd000;//400 unsigned long TIME_INTERVAL1=(90000000/200 - 1);//900000 unsigned long TIME_INTERVAL2=0x1000; BYTE newFirmwareF; //1 = new firmware present. BUS BUS1; unsigned long iu; unsigned long program_size; unsigned char dem[]=" dariush abbasi iran pw co "; //**************** void boot_jump(WORD address) { asm("LDR SP,[R0]"); //Load new stack pointer address asm("LDR PC,[R0,#4]");//Load new program counter address } //************************************ void execute_user_code(void) { SCB->VTOR = USER_FLASH_START & 0x1FFFFF80; boot_jump(USER_FLASH_START); } void delay (unsigned int a ) { for(l=0;l<a;l++) { for (i=0;i<10;i++) { LPC_WDT->WDFEED=0xaa; LPC_WDT->WDFEED=0x55; } } } //******************************* void delay_ms (unsigned int a ) { unsigned int a1,a2; for(a1=0;a1<a;a1++) { LPC_WDT->WDFEED=0xaa; LPC_WDT->WDFEED=0x55; for (a2=0;a2<0x5fff;a2++) { } ; } } //*************************** void reset_WD(void) { LPC_WDT->WDFEED=0xaa; LPC_WDT->WDFEED=0x55; } //****************************************** BYTE WRITE(unsigned long df_add,unsigned long iap_add,BYTE sector,unsigned long offset) { BYTE rc ; unsigned long jk; read_DF_random((df_add+offset),daT,1024); // for(jk=0;jk<2;jk++) // { // for(i=0;i<512;i++) // dem[i]=daT[i+(512*jk)]; for(i=0;i<1024;i++) dem[i]=daT[i]; read_DF_random((df_add+1024),daT,1024); for(i=0;i<1024;i++) dem[i+1024]=daT[i]; read_DF_random((df_add+2048),daT,1024); for(i=0;i<1024;i++) dem[i+2048]=daT[i]; read_DF_random((df_add+3072),daT,1024); for(i=0;i<1024;i++) dem[i+3072]=daT[i]; LPC_WDT->WDFEED=0xaa; LPC_WDT->WDFEED=0x55; // dem[0]++; //dem[1]++; iap_prepare( sector, sector); //rc=iap_copy_ram_to_flash(&dem,(char *)((iap_add+offset)+(512*jk)), 512); rc=iap_copy_ram_to_flash(&dem,(char *)((iap_add+offset)),4096); // if(rc!=0) return rc; // } return rc; } //******************************************************************************/ //******************************* void main() { //unsigned char demo[]=" dariush abbasi iran pw co "; L_Byte L2B; //SCB->VTOR = 0; //boot_jump(0); CLK_INIT(); PLL_Init (70, 1 ) ; init_timer( 0, TIME_INTERVAL0 ); // enable_timer( 0 ); // init_timer( 1, TIME_INTERVAL1 ); // // enable_timer( 1 ); // init_timer( 2, TIME_INTERVAL2 ); // // enable_timer( 2 ); //en_watch_dog() ; uart_init(0); NVIC_SetPriority(UART0_IRQn, 0); spi_enable(); //**************************** FIO0DIR=0XFfFffFFF; FIO1DIR=0XFFFFFFFF; FIO2DIR=0XFFFFFFFF; FIO3DIR=0XFFFFFFFF; t_startup=0; DataFlashReset(); IsBusy(); DataFlashReset(); //***************************** //init_dis(); //************************ // LPC_TIM1->TCR = 3; // init_timer( 1, (100000000/(20*speed_) - 1) ); // // LPC_TIM1->TCR = 1; USART0.EOS= '\n'; //USART0.pRxBuffer=zLink.rxBuf; /*RXBuffer;*/ USART0.RxFirst = 0x00; USART0.RxLast = 0x00; USART0.RxCount = 0x00; //FIO1PIN&=~(1<<18) ; FIO1PIN|=(1<<18) ; //************************ read_DF_random(0x3a7fc0,daT,12); L2B.xByte[0]=daT[3]; L2B.xByte[1]=daT[4]; L2B.xByte[2]=daT[5]; L2B.xByte[3]=0; program_size=L2B.L; //*********************************** if((daT[7]==1)&&(daT[8]==0xaa)&&(daT[9]==0x55)) { __disable_irq(); iap_init() ; txt_len=iap_prepare( 10, 20); txt_len=iap_erase_sector(10, 20); //*************************************** sectore 10 txt_len=WRITE(0x3a8000,0xa000,10,0); //*************************************** sectore 11 txt_len=WRITE(0x3a9000,0xb000,11,0); //*************************************** sectore 12 txt_len=WRITE(0x3aa000,0xc000,12,0); //*************************************** sectore 13 txt_len=WRITE(0x3ab000,0xd000,13,0); //*************************************** sectore 14 txt_len=WRITE(0x3ac000,0xe000,14,0); //*************************************** sectore 15 txt_len=WRITE(0x3ad000,0xf000,15,0); // //*************************************** sectore 16 txt_len=WRITE(0x3ae000,0x10000,16,0); txt_len=WRITE(0x3af000,0x11000,16,0); txt_len=WRITE(0x3b0000,0x12000,16,0); txt_len=WRITE(0x3b1000,0x13000,16,0); txt_len=WRITE(0x3b2000,0x14000,16,0); txt_len=WRITE(0x3b3000,0x15000,16,0); txt_len=WRITE(0x3b4000,0x16000,16,0); txt_len=WRITE(0x3b5000,0x17000,16,0); // //*************************************** sectore 17 txt_len=WRITE(0x3b6000,0x18000,17,0); txt_len=WRITE(0x3b7000,0x19000,17,0); txt_len=WRITE(0x3b8000,0x1a000,17,0); txt_len=WRITE(0x3b9000,0x1b000,17,0); txt_len=WRITE(0x3ba000,0x1c000,17,0); txt_len=WRITE(0x3bb000,0x1d000,17,0); txt_len=WRITE(0x3bc000,0x1e000,17,0); txt_len=WRITE(0x3bd000,0x1f000,17,0); // //*************************************** sectore 18 txt_len=WRITE(0x3be000,0x20000,18,0); txt_len=WRITE(0x3bf000,0x21000,18,0); txt_len=WRITE(0x3c0000,0x22000,18,0); txt_len=WRITE(0x3c1000,0x23000,18,0); txt_len=WRITE(0x3c2000,0x24000,18,0); txt_len=WRITE(0x3c3000,0x25000,18,0); txt_len=WRITE(0x3c4000,0x26000,18,0); txt_len=WRITE(0x3c5000,0x27000,18,0); //*************************************** sectore 19 txt_len=WRITE(0x3c6000,0x28000,19,0); //*************************** daT[7]=0; daT[8]=0; write_DF_random(0x3a7fc0,daT,12); FIO0PIN|=(1<<30) ; // __enable_irq(); execute_user_code(); } FIO1PIN&=~(1<<18) ; //*************************** LPC_WDT->WDFEED=0xaa; LPC_WDT->WDFEED=0x55; // ****************************** if( (USART0.RxCount > 0)) Check_hh_Data0(2000) ; // ****************************** __disable_irq(); iap_init() ; iap_prepare( 10, 20); txt_len= BlankCheckSectors((char *)10) ; __enable_irq(); if(txt_len==0) { while(1) { iu++; if(iu==800000) { FIO1PIN&=~(1<<18) ; FIO0PIN|=(1<<29) ; } if(iu==400000) { FIO0PIN&=~(1<<29) ; FIO1PIN|=(1<<18) ; } if(iu>900000) iu=0; LPC_WDT->WDFEED=0xaa; LPC_WDT->WDFEED=0x55; if(USART0.RxCount >0) Check_hh_Data0(100) ; } } // ****************************** __disable_irq(); execute_user_code(); }
  3. #3
    2007/04/05
    967
    3
    gbg

    پاسخ : نوشتن بوت لودر دوم و پگريت براي lpc1768

    به نظرم بايد آدرس شروع برنامه رو توي برنامه اعلام کني ولي تو IAR نمي دونم چيه
  4. #4
    2007/08/21
    تهران
    843
    7

    پاسخ : نوشتن بوت لودر دوم و پگريت براي lpc1768

    البته در مورد كمپايلر iar در قسمت linker configuration يك چيزهايي هست ولي من درست درك نمي كنم كه چكار بايد بكنم با آنها !
  5. #5
    2007/04/05
    967
    3
    gbg

    پاسخ : نوشتن بوت لودر دوم و پگريت براي lpc1768

    نقل قول نوشته اصلی توسط داريوش عباسي
    البته در مورد كمپايلر iar در قسمت linker configuration يك چيزهايي هست ولي من درست درك نمي كنم كه چكار بايد بكنم با آنها !
    اونا رو که من کلا نمي دونم اصلا با IDE کامپايلر iar کار نکردم
    توي کيل تو قسمت Main برنامه بايد اينو بنويسي
    NVIC_SetVTOR(X)
    x آدرش شروع برنامه تو حافطه هستش
  6. #6
    2007/08/21
    تهران
    843
    7

    پاسخ : نوشتن بوت لودر دوم و پگريت براي lpc1768

    آيا كسي با كمپايلر IAR كار كرده كه بتونه به من كمك كنه
    من براي درست كردن USE APPLICATION كه در آدرس 0XA000 باشد و در صورت SET شدن به آن :
    void boot_jump(WORD address)
    {
    asm("LDR SP,[R0]" //Load new stack pointer address
    asm("LDR PC,[R0,#4]"//Load new program counter address
    }
    //************************************
    void execute_user_code(void)
    {
    SCB->VTOR = USER_FLASH_START & 0x1FFFFF80;
    boot_jump(USER_FLASH_START);
    }

    برنامه درست كار كند
    مشكل دارم
  7. #7
    2009/09/25
    اصفهان
    814
    48

    پاسخ : نوشتن بوت لودر دوم و پگريت براي lpc1768

    الان مشکلت چي هست دقيقا؟
    بعد از بوت لودر نمي تونيjump بزني به برنامت؟
    هميشه به ياد خدا باش !
  8. #8
    2007/08/21
    تهران
    843
    7

    پاسخ : نوشتن بوت لودر دوم و پگريت براي lpc1768

    نقل قول نوشته اصلی توسط DDR3
    الان مشکلت چي هست دقيقا؟
    بعد از بوت لودر نمي تونيjump بزني به برنامت؟
    چرا به اون آدرس جامپ مي كنم ولي برنامه اجرا نمي شود
    حدس مي زنم برنامه اپليكيشن بايد تنظيماتي داشته باشد كه از يك اپليكيشن عادي متفاوت باشد چون آدرس شروع آن ديگر از 00 نيست و از A000 است

    اگر تنظيمات كمپايلر IAR رو بدونم كه چطوري ميشه اينكار رو كرد فكر كنم حل بشه
  9. #9
    2009/09/25
    اصفهان
    814
    48

    پاسخ : نوشتن بوت لودر دوم و پگريت براي lpc1768

    من ir کار نکردم و همينطور lpc
    ولي بنظرم از لحاظ پاسه و اساس تفاوتي نداشته باشند
    روند اينطوري هست،در زمان نوشتن برنامه اپليکشن شما آدرسات بايد طبق هموني باشه که رو فلش هست،با ديباگر اجرا کن بدوم بوت لودر بايد تو همون آدرس شروع بشه
    و اجرا هم بشه
    اگر انجام شد،پس برنامه با آدرس جديد درست هست
    آيتم بعدي تنظيم nvic هست،تو برنامه بوت که هموون آدرس اپليکشن هست
    بعدش بايد پرش کني بدون شرط به 4 بايت بعدش
    توي stm با کامپايلر کيل هست اينها که گفتم
    تطبيقش بده به lpc و ir
    ببين انجام ميشه
    هميشه به ياد خدا باش !
  10. #10
    2007/08/21
    تهران
    843
    7

    پاسخ : نوشتن بوت لودر دوم و پگريت براي lpc1768

    كمپايلر iar قسمتي در منوي linker دارد كه ظاهرا براي همين منظوره ولي من هر كاري مي كنم كار نمي كنه .
    كسي با IAR كار نكرده ؟
صفحه 1 از 2 12 آخرین
نمایش نتایج: از 1 به 10 از 14

موضوعات مشابه

  1. نوشتن یک بوت لودر
    توسط FAM در انجمن XMEGA
    پاسخ: 9
    آخرين نوشته: 2017/06/06, 10:45
  2. در خواست بوت لودر برای lpc1768
    توسط Ramin1768 در انجمن NXP
    پاسخ: 2
    آخرين نوشته: 2016/02/25, 22:33
  3. پراگرم با بوت لودر LPC1768
    توسط parsgroup در انجمن NXP
    پاسخ: 2
    آخرين نوشته: 2014/12/14, 20:37
  4. آماده سازی هدر بورد LPC1768 برای بوت لودر
    توسط سعید خیری در انجمن NXP
    پاسخ: 2
    آخرين نوشته: 2014/07/13, 22:07
  5. بوت لودر LPC1768
    توسط yaser1373 در انجمن NXP
    پاسخ: 4
    آخرين نوشته: 2014/01/16, 17:23

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •