Thông báo

Collapse
No announcement yet.

Trình dịch cho ARM thì nên dùng loại nào ?

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #46
    hic;bác sài đồ xin quá; em ko biết! Em chỉ sài ARM7 thôi! sorry bác

    Comment


    • #47
      Nguyên văn bởi ngocpro Xem bài viết
      Minh tìm trình dịch cho con NS9750 này mãi mà vẫn không kiếm được, chẳng tìm được gì về nó ngoài cái datasheet cả
      có một chút code nhưng quá ít viết bằng asm, còn C thì chưa tìm được
      ở VN thì hay dùng ARM của Atmel và Philips còn con này lại của Netsilicon
      Có ai biết gì về nó thì xin chỉ giùm với nhé
      Bo của mình là bo Armadillo300 của bọn Nhật, nó dùng có ARM NS9750 này, mình muốn viết chương trình điều khiển LCD dùng LCD của màn hình điện thoại, tính viết code rồi nạp qua cổng Com giống VĐK nên mới phải kiếm trình dịch, còn nếu không mình phải viết code bằng C rồi debug nó trong linux rồi mới nạp xuống được, làm thế thì không biết code có chạy đc ko mà nạp, tốt nhất vẫn là phải có trình dịch.
      ai biêt xin chỉ dùm nhé. Thanks!!
      Bạn không thể làm trực tiếp như thế giống VDK đựoc đâu. AtmarkTechno này hầu hết là sử dụng Linux Embedded!
      Về tài liệu về nó thì toàn là tiếng Nhật thôi, nếu bạn có cái CD đi kèm thì có datasheet và User_Guide là bằng tiếng Anh. Bạn check lại nhé. Nếu có thể thì tham khảo thêm: http://armadillo.atmark-techno.com/armadillo-300
      Chúc vui!

      Comment


      • #48
        Nguyên văn bởi ETVN Xem bài viết
        Bạn không thể làm trực tiếp như thế giống VDK đựoc đâu. AtmarkTechno này hầu hết là sử dụng Linux Embedded!
        Về tài liệu về nó thì toàn là tiếng Nhật thôi, nếu bạn có cái CD đi kèm thì có datasheet và User_Guide là bằng tiếng Anh. Bạn check lại nhé. Nếu có thể thì tham khảo thêm: http://armadillo.atmark-techno.com/armadillo-300
        Chúc vui!
        Tài liệu toàn bộ trong CD nó đây: http://armadillo.atmark-techno.com/f.../armadillo-300

        Comment


        • #49
          Không đồng ý với ý kiến của anh ETVN. Khi viết chương trình chạy ở trên hệ điều hành thì phải viết theo nguyên tác của hệ điều hành. Còn viết chương trình theo kiểu điều khiển trực tiếp không qua nền tảng nào thì lại viết kiểu khác. Vấn đề là viết xong phải có trình biên dịch và có công cụ để download vào chạy thử hoặc là phải có emulator để chạy thử trên pc xem có đúng không. Thường thì các sản phẩm thương mại nó sẽ bán thêm phần mềm biên dịch và công cụ download và debug trên board. Nếu bạn thiếu xiền không mua thì có thể tự làm hoặc dùng tool free.

          Các IDE mà bọn nó bán đa phần toàn là dùng arm-gcc nhưng mà làm thêm giao diện đồ họa, nó tự viết makefile, làm bạn thấy có vẻ như là nó dễ dùng, tài liệu nó viết cũng khá tốt nữa, có khi nó lại còn cho người của hãng sang làm tutor vài ngày đồng thời quảng cáo luôn cho hãng ấy chứ. CPU nào thì sẽ tùy thuộc vào option mà bạn truyền cho trình biên dịch. Các IDE thương mại cũng thêm phần debug, download chương trình qua JTAG v.v...

          Nếu bạn đã quen với linux, và terminal thì hoàn toàn không cần đến những IDE kia. Trình biên dịch thì chúng ta dùng arm-gcc. Các bạn có thể dùng cái có sẵn như bộ ELDK (embedded linux development kit ) của denx.de hoàn toàn free ( hình như cũng chạy được trên cygwin của windows). Một cách khác là bạn tự build một cái những cái mà bạn cần là uclibc, gcc, binutil cho arm ( link down các bạn tự google ). Một cách khác dơn giản hơn đó là sử dụng buildroot ( nó thực chấtt là một chương trình gồm rất nhiều script). Bạn chọn con chip mà bạn dùng và các option khác cho phù hợp với cấu hình board của bạn rồi sau đó nó sẽ tự down các gói cần thiết. rồi biên dịch cho bạn. Ngoài ra nó còn có thêm rất nhiều tín năng khác giúp bạn nhanh chóng có được một compiler và môi trường làm việc như ý mình.
          Về phần debug thì một số tài liệu có nói đên sử dụng gdb để cross debug như mà mình chưa thử. download chương trình vào board thì có thể dùng boot loader là uboot, rồi download chương trình vào board trong uboot qua tftp. uboot co' the? chay chuong trinh` khi chua có hệ điều hành.

          Một phần khá quan trọng là emulator. nếu ai làm với embedded linux thì có thể dùng qemu. Nó cho mô phỏng một số CPU arm trong đó có con ARM926EJ-S. Bạn nào cần dùng tools xịn của ARM ( bộ realview 3.1 có cả add-on license xịn mua trực tiếp từ tập đoàn arm) thì xin mời đến ĐH Công Nghệ Đại học QGHN.

          Comment


          • #50
            Em là sinh viên K52 đại học công nghệ , anh có thể cho em chút thông tin để em còn liên lạc xin tool

            Comment


            • #51
              nói về LPC2919 có 1 số đặc điểm sau đây:

              • LPC2919 dùng lõi ARM968E-S tần số: 125MHz
              • Về bộ nhớ :
              + 2 bộ nhớ TCM : 16kB bộ nhớ ITCM, 16kB bộ nhớ DTCM
              + SRAM 56kB
              + 8 kB SRAM ETB dành riêng cho code và data
              + bộ nhớ flash-program tốc độ cao lên đến 768kB
              + bộ nhớ EEPROM 16kB có thể xóa và lập trình được
              + Master đôi , bộ điều khiển GPDMA 8 kênh trên bus AHB tích hợp cho SPI và UART
              + SMC mở rộng với 8 bank nhớ , bus dữ liệu lên đến (up to) 32 bit, bus địa chỉ 24bit
              • Giao diện nối tiếp:
              + 2 kênh điều khiển CAN hỗ trợ FullCAN và biên độ lọc thông điệp rộng
              + 2 kênh điều khiển LIN master với phần cứng đầy đủ để hỗ trợ cho giao tiếp LIN, giao diện của LIN có thể cấu hình như UART để hỗ trợ cho 2 kênh UART
              + 2 kênh UART 550 với 16 byte Tx và Rx FIFO, hỗ trợ DMA, RS485 và EIA485 9 bit
              + 3 cặp Q-SPI với 4 đường lựa chọn slave độ rộng 16bit , 8 locations deep , vào trước ra trước Tx và FIFO Rx
              + 2 I2C
              • Các ngoại vi khác:
              + 2 bộ ADC 10 bit 8 kênh , điện thế 3.3V với thời gian chuyển đổi là 2.44uS mỗi kênh , mỗi kênh cung cấp 1 hàm so sánh để việc tạo ngắt là nhỏ nhất
              + Tổ hợp lựa chọn bộ kích cho tất cả ADC , timer , PWM, ADC khác và các tín hiệu vào mở rộng
              + 4 bộ timer 32bit mỗi timer đều có 4 thanh ghi capture and compare bắt mẫu và so sánh được kết nối với các PORT I/O
              + 4 bộ PWM 6 kênh với chức năng bắt mẫu và bẫy lỗi
              + 2 bộ timer 32 bit dành riêng cho PWM và ADC để lên lịch và dồng bộ hóa các chức năng này
              + Giao diện encoder vuông pha có thể kiểm soát bất cứ bộ encoder vuông pha nào
              + 1 bộ watchdog 32bit
              • 108 pin GPIO khả lập trình vào ra (pull-up, pull-down), hoặc giữ bus
              • Bộ điều khiển VIC với 16 mức độ chẵn lẻ.
              • 19 pin dành cho ngắt mở rộng trong CAN và LIN
              • Pin xung ra (clock-out) có thể cấu hình để điều khiển xung hệ thống mở rộng
              • Bộ xử lý wake-up từ năng lượng thấp qua pin ngắt mở rộng trong hoạt động của CAN hoặc LIN
              • RGU linh động có thể kiểm soát reset gồm có:
              + Bộ dao động vòng tròn năng lượng thấp on-chip với tần số 0.4MHz, thường xuyên cung cấp xung chất lượng cho xung hệ thống
              + Bộ dao động thạch anh on-chip với dải tần từ 10MHz  25MHz thích hợp cho PLL
              + CPU hoạt động ở tần số tối đa là 125MHz
              + 7 bộ điều khiển (driver) phân đoạn
              • Chức năng debug ETM/ETB với 8kB của SRAM dành riêng cho việc lưu trữ code và data
              • Bộ đôi nguồn cung cấp:
              + CPU hoạt động ở + 1.8V +_5%
              + các hoạt động vào ra dùng 2.7V và 3.6V nguồn vào cũng có thể là 5.5V
              • Nhiệt độ hoạt động -400C  +850¬C
              • Kiểu vỏ linh kiện : nhựa hình vuông phẳng 144pin LQFP144
              • Kiểu pin : SOT486-1
              các vấn đề về sdcard, usb, tcp/ip, upgrate firmware,...
              trên các dòng chip: stm32, lpc of nxp
              please cell phone: 01649895559

              Comment


              • #52
                đối với LPC2919 phải dùng KEIL uVision 4.1 để lập trình mới có đầy đủ library các bạn có thể vào link dưới đây để load: http://www.keil.com/fid/jyzzbvw53j1j...val/mdk410.exe
                các vấn đề về sdcard, usb, tcp/ip, upgrate firmware,...
                trên các dòng chip: stm32, lpc of nxp
                please cell phone: 01649895559

                Comment


                • #53
                  assembly compiler

                  Tôi đang tìm hiểu về các kiến trúc arm, kế hoạch sẽ học ngôn ngữ assembly để có thể hiểu rõ kiến trúc arm hơn nhưng khổ nỗi đi tìm cái assembler cho arm sao không thấy, không biết arm-elf-as có thể compile được không? có ebook nào viết về asm không ? có ai nghiên cứu về vấn đề này mong được giúp đỡ cùng trao đổi học tập.

                  Comment


                  • #54
                    Tôi đang tìm hiểu về các kiến trúc arm, kế hoạch sẽ học ngôn ngữ assembly để có thể hiểu rõ kiến trúc arm hơn nhưng khổ nỗi đi tìm cái assembler cho arm sao không thấy, không biết arm-elf-as có thể compile được không? có ebook nào viết về asm không ? có ai nghiên cứu về vấn đề này mong được giúp đỡ cùng trao đổi học tập.

                    bạn ơi! mình đang dùng KEIL để lập trình cho ARM9 bằng code C mà thấy cũng có cả khối kiến thức nè.nhất là các thanh ghi,bạn muốn dùng ứng dụng nào đều phải tự khởi tạo chức năng, thanh ghi, không giống như C trong codevision là khởi tạo sẵn đâu, bạn cứ yên tâm dùng KEIL vẫn học được nhiều,mà code C cho ARM thì nhiều lắm,còn Assemler thì mình chưa nghiên cứu.
                    các vấn đề về sdcard, usb, tcp/ip, upgrate firmware,...
                    trên các dòng chip: stm32, lpc of nxp
                    please cell phone: 01649895559

                    Comment


                    • #55
                      sau đây là những gì mình tìm hiểu được về con LPC2919/01,hnay mình post tip 1 số code mà mình đã thực hiện thành công trên board LPC2919/01 của mình

                      /**********code chạy LED***********/
                      /*control normal led
                      **P1.[24..31]*/
                      #include "LPC29xx.h"
                      #include "string.h"
                      #include "type.h"
                      #include "target.h"
                      #include "normalled.h"
                      #define delay_2n 12

                      volatile DWORD led_mask[8] = {1<<24,1<<25,1<<26,1<<27,1<<28,1<<29,1<<30,1<<31};
                      extern void LED_Init(void) {
                      GPIO1_DR |= (1<<24)|(1<<25)|(1<<26)|(1<<27)|(1<<28)|(1<<29)|(1 <<30)|(1<<31);
                      GPIO1_OR |= 0x00000000;
                      }
                      //==============================

                      static void delays (int time) {

                      time <<= delay_2n;

                      while (time--);
                      }
                      extern void scanled(void)
                      {
                      int i,j;
                      LED_Init();
                      while(1){
                      for(i=0;i<=7;i++){
                      GPIO1_OR |= led_mask[i];
                      delays(100);}
                      for(j=7;j>=0;j--){
                      GPIO1_OR &=~led_mask[j];
                      delays(100);}
                      }
                      }
                      extern void displayled(void)
                      {
                      int i;
                      for(i=0;i<=7;i++){
                      GPIO1_OR = led_mask[i];
                      delays(1000);}
                      }
                      void main(void)
                      {
                      scanled();
                      }
                      các vấn đề về sdcard, usb, tcp/ip, upgrate firmware,...
                      trên các dòng chip: stm32, lpc of nxp
                      please cell phone: 01649895559

                      Comment


                      • #56
                        tiếp theo mình post code điều khiển DC motor:

                        /****************code điều khiển DC motor*****************/

                        /*
                        **cau hinh pin ra nhu sau:
                        **
                        **2DC: P3.[8..11] = MAT2..5*/
                        #include "LPC29xx.h" /* LPC29xx definitions */
                        #include "stdio.h"
                        #include "type.h"
                        #include "irq.h"
                        #include "mtimer.h"
                        #include "timer.h"
                        #include "normalLED.h"
                        #include "pwm.h"

                        extern volatile DWORD timer_counter;
                        volatile DWORD counter_overflow = 0;
                        volatile DWORD transfer_done = 0;
                        volatile DWORD update_done = 0;
                        volatile DWORD match_counter0 = 0;
                        volatile DWORD PWMFlag = 0;
                        volatile DWORD PWM_CYCLE = 0;
                        volatile DWORD PWM_OFFSET = 0;

                        /*hàm điều khiển*/
                        void PWM1Handler (void)
                        {
                        DWORD regVal;

                        regVal = PWM1_INT_STATUS;
                        if ( regVal & CO_INT )
                        {
                        counter_overflow++;
                        }
                        if ( regVal & UD_INT )
                        {
                        update_done++;
                        PWMFlag |= UD_INT;
                        }
                        if ( regVal & TD_INT )
                        {
                        transfer_done++;
                        PWMFlag |= TD_INT;
                        }
                        PWM1_INT_CLR_STATUS |= regVal;
                        return;
                        }
                        /*hàm bắt mẫu*/
                        void PWM1CapMatchHandler (void)
                        {
                        DWORD regVal;

                        /* check match 0 on PWM0 only */
                        regVal = PWM1_INTM_STATUS;
                        if ( regVal & (1<<0) )
                        {
                        match_counter0++;
                        }
                        PWM1_INTM_CLR_STATUS |= regVal;
                        return;
                        }
                        /*hàm khởi tạo*/
                        void PWM1_Init( DWORD cycle )
                        {
                        /* khoi tao cac pin cho dung voi mainboard
                        set GPIOs as PWM MATCH0~5 pins on PWM0 */
                        SFSP3_8 = (0x01<<2)|(0x02<<0);//PWM1, MAT2
                        SFSP3_9 = (0x01<<2)|(0x02<<0);//PWM1, MAT3
                        SFSP3_10 = (0x01<<2)|(0x02<<0);//PWM1,MAT4
                        SFSP3_11 = (0x01<<2)|(0x02<<0);//PWM1,MAT5

                        PWM1_Stop();

                        /* PWM1 Output period is (PRD+1)*(PRSC+1) system clock cycles */
                        PWM1_PRSC = 1; /* prescale */
                        PWM1_PRD = PWM_CYCLE; /* period */
                        //PWM1_Set( PWM_CYCLE, 0 ); /* offset set to 0 ham dieu che do rong xung cho LPC2919*/
                        set_DC( PWM_CYCLE,mode, 0 );
                        /* Trap polarity: active low, disable traps on PWM0~5 */
                        PWM1_TRPCTLS &= ~( PWM_MATCH0_5|(0x01<<16) );

                        /* Cotinuous mode, sync out inactive */
                        PWM1_MODECTL &= ~(RUN_ONCE|SYNC_OUT_ENA);

                        /* Transfer trigger and sync source are external */
                        PWM1_MODECTL |= (SYNC_SEL|TRANS_ENA_SEL);

                        PWM1_CTRLS |= PWM_MATCH0_5; /* PWM1~5 output are HIGH level, reset value */

                        PWM1_CTRLS &= ~(PWM_MATCH0_5<<16); /* PWM1~5 carrier burst disabled, reset value */

                        PWM1_MODECTL |= UPD_ENA; /* Update shadow registers one more time */


                        /* Only PWM1 is used thus far. Enable PWM1 interrupt. */
                        install_irq( PWM1_INT, (void *)PWM1Handler, HIGHEST_PRIORITY );
                        EnableIntReq_IRQ( PWM1_INT, ACTIVE_HIGH, HIGHEST_PRIORITY );

                        #if 0
                        /* Enable PWM capture/match interrupt. */
                        install_irq( PWM1_CAP_INT, (void *)PWM1CapMatchHandler, HIGHEST_PRIORITY );
                        EnableIntReq_IRQ( PWM1_CAP_INT, ACTIVE_HIGH, HIGHEST_PRIORITY );
                        PWM1_INTM_SET_ENABLE = PWM_MATCH1_5; /* Enable MATCH ACTIVE on match1~5 */
                        #endif
                        return;
                        }
                        /*hàm thiết lập*/
                        void PWM1_Set( DWORD cycle, DWORD offset )
                        {
                        /*dung PWM0_MATCHA... va PWM0_MATCHDA... de dieu che xung*/
                        PWM1_MATCHA0 = 0x0; /* set PWM cycle ACTIVE */
                        PWM1_MATCHA1 = 0x0;
                        PWM1_MATCHA2 = 0x0;
                        PWM1_MATCHA3 = 0x0;
                        PWM1_MATCHA4 = 0x0;
                        PWM1_MATCHA5 = 0x0;

                        PWM1_MATCHDA0 = cycle; /* set PWM cycle DEACTIVE */
                        PWM1_MATCHDA1 = cycle * 5/6 + offset;
                        PWM1_MATCHDA2 = cycle * 2/3 + offset;
                        PWM1_MATCHDA3 = cycle * 1/2 + offset;
                        PWM1_MATCHDA4 = cycle * 1/3 + offset;
                        PWM1_MATCHDA5 = cycle * 1/6 + offset; //1/6

                        PWM1_MODECTL |= UPD_ENA;
                        PWM1_MODECTL |= TRANS_ENA; /* Transfer and update shadow registers */
                        return;
                        }
                        Last edited by nguyenvanvui; 19-06-2010, 17:52.
                        các vấn đề về sdcard, usb, tcp/ip, upgrate firmware,...
                        trên các dòng chip: stm32, lpc of nxp
                        please cell phone: 01649895559

                        Comment


                        • #57
                          tiếp tiếp:
                          /*hàm khởi động PWM*/
                          void PWM1_Start( void )
                          {
                          PWM1_MODECTL |= CNT_RESET; /* Counter Reset */
                          PWM1_MODECTL &= ~CNT_RESET;

                          /* start from reset value, enable update and transfer */
                          PWM1_MODECTL = UPD_ENA|TRANS_ENA;
                          PWM1_MODECTL |= CNT_ENA; /* counter enable, PWM enable */
                          PWM1_MODECTL |= UPD_ENA;
                          return;
                          }
                          /*hàm dừng*/
                          void PWM1_Stop( void )
                          {
                          PWM1_MODECTL |= CNT_RESET; /* Counter Reset */
                          PWM1_MODECTL &= ~CNT_RESET;

                          /* All disabled UPD, TRANS, SYNC_OUT and COUNTER */
                          PWM1_MODECTL &= ~(CNT_ENA|SYNC_OUT_ENA|TRANS_ENA); /* Stop PWM */
                          PWM1_MODECTL |= UPD_ENA;
                          return;
                          }
                          /*reset*/
                          void PWM1_Reset( void )
                          {
                          PWM1_MODECTL |= CNT_RESET; /* Counter Reset */
                          PWM1_MODECTL &= ~CNT_RESET;

                          /* Clear pending interrpt */
                          PWM1_INT_CLR_STATUS = 0x0F; /* Clear EMGY, UD, TD, and CO */
                          PWM1_INTM_CLR_STATUS = 0xFFF; /* Clear match act 0~5, match deact 0-5 */
                          PWM1_INTC_CLR_STATUS = 0x0F; /* Clear capture 0~3 */
                          return;
                          }
                          /*hàm thiết lập cho DC*/
                          void set_DC( DWORD xung, DWORD dieuchinh )
                          {
                          /*dung PWM0_MATCHA... va PWM0_MATCHDA... de dieu che xung*/
                          //điều khiển 1 motor cho 2 chiều khác nhau
                          PWM1_MATCHA5 = 0x0;
                          //PWM1_MATCHDA5 = xung + dieuchinh;//tắt chiều 1

                          PWM1_MATCHA4 = 0x0;
                          PWM1_MATCHDA4 = xung + dieuchinh;//bật chiều 2
                          }

                          PWM1_MODECTL |= UPD_ENA;
                          PWM1_MODECTL |= TRANS_ENA; /* Transfer and update shadow registers */
                          return;
                          }
                          /*hàm điều chỉnh tốc độ DC*/
                          int speed_DC (DWORD cycle, DWORD offset)
                          {
                          PWM_CYCLE = cycle;

                          /* Enable MSCSS timer0(m3) for PWM0 shadow register update */
                          init_mtimer0(TIMER_TICKS,PWM_CYCLE);
                          PWM1_Init( cycle );
                          PWM1_Start();

                          /* Enable PWM interrupt */
                          PWM1_INT_SET_ENABLE = UD_INT | TD_INT;

                          enable_mtimer0();
                          while ( 1 )
                          {
                          if ( (PWMFlag & UD_INT) && (PWMFlag & TD_INT) )
                          {
                          PWMFlag = 0; /* Reset interrupt flag */
                          if( offset <= PWM_CYCLE )
                          {
                          offset += PWM_OFFSET;
                          }
                          else
                          {
                          offset = 0;
                          }
                          set_DC( cycle, offset );
                          }
                          }
                          PWM1_Stop();
                          return 0;
                          }

                          /*************end of file**************/
                          các vấn đề về sdcard, usb, tcp/ip, upgrate firmware,...
                          trên các dòng chip: stm32, lpc of nxp
                          please cell phone: 01649895559

                          Comment


                          • #58
                            Nguyên văn bởi nguyenvanvui Xem bài viết
                            Tôi đang tìm hiểu về các kiến trúc arm, kế hoạch sẽ học ngôn ngữ assembly để có thể hiểu rõ kiến trúc arm hơn nhưng khổ nỗi đi tìm cái assembler cho arm sao không thấy, không biết arm-elf-as có thể compile được không? có ebook nào viết về asm không ? có ai nghiên cứu về vấn đề này mong được giúp đỡ cùng trao đổi học tập.

                            bạn ơi! mình đang dùng KEIL để lập trình cho ARM9 bằng code C mà thấy cũng có cả khối kiến thức nè.nhất là các thanh ghi,bạn muốn dùng ứng dụng nào đều phải tự khởi tạo chức năng, thanh ghi, không giống như C trong codevision là khởi tạo sẵn đâu, bạn cứ yên tâm dùng KEIL vẫn học được nhiều,mà code C cho ARM thì nhiều lắm,còn Assemler thì mình chưa nghiên cứu.
                            bác có thể chỉ cho tôi cách sử dụng keil 4.1 được không?
                            Cái gì biết nói biết. Cái không biết nói không biết. Ấy là biết đấy!
                            email:

                            Comment


                            • #59
                              Trích ha_thi: bác có thể chỉ cho tôi cách sử dụng keil 4.1 được không?
                              hic, câu hỏi của bác chung chung quá,bác cứ lên trang chủ của KEIL, đăng ký 1 tài khoản, sau đó load KEIL 4.1, rồi sử dụng giống như các KEIL phiên bản cũ thôi, nhưng KEIL 4.1 hỗ trợ, các dòng ARM9 mạnh hơn về tool và có đầy đủ thư viện của dòng ARM này....
                              các vấn đề về sdcard, usb, tcp/ip, upgrate firmware,...
                              trên các dòng chip: stm32, lpc of nxp
                              please cell phone: 01649895559

                              Comment


                              • #60
                                Sau đây mình xin post tiếp 1 số bài có liên quan đến ARM9
                                Đầu tiên là cấu trúc ARM968E-S:



                                ARM968E-S được thiết kế dựa trên kiến trúc đường ống 5 cổng ARMv5TE, do đó tất cả các bộ phận của hệ thống nhớ và xử lý có thể hoạt động 1 cách liên tục. Theo kiểu này, bộ xử lý sẽ xử lý 5 công việc cùng 1 thời điểm : trong khi 1 lệnh đang được thực thi, lệnh kế tiếp nó đang được giải mã và 1 lệnh thứ 3 đang được lấy từ bộ nhớ, trong lúc đó nó vẫn truy cập dữ liệu từ bộ nhớ và các chu kỳ viết lại.
                                ARM968E-S còn sử dụng cấu trúc cổng THUMB là 1 cấu trúc thiết lập tập lệnh siêu rút gọn. Như vậy có 2 kiểu thiết lập cho ARM968E-S như sau:
                                • Thiết lập chuẩn ARMv5TE 32 bit.
                                • Thiết lập THUMB 16 bit.
                                Một số đặc điểm khác:
                                + Bộ đệm viết dành cho các bus AHB và TCM.
                                + Hoạt động chu kỳ đơn MAC đa tích hợp 16x32 và 16 bit lệnh DSP để tăng tốc cho các thuật toán xử lý đơn và các ứng dụng.
                                các vấn đề về sdcard, usb, tcp/ip, upgrate firmware,...
                                trên các dòng chip: stm32, lpc of nxp
                                please cell phone: 01649895559

                                Comment

                                Về tác giả

                                Collapse

                                phamthaihoa Tìm hiểu thêm về phamthaihoa

                                Bài viết mới nhất

                                Collapse

                                Đang tải...
                                X