NUC972移植工作記錄

來源:互聯網
上載者:User

標籤:移植

1、

 

自動掛載U盤和SD卡問題的解決:

http://blog.csdn.net/xdw1985829/article/details/6684968

用的mdev的方法。

 

在 Linux中我們經常用到U盤、SD卡的掛載問題,每次都手動掛載或卸載非常麻煩,我們可以採取以下方法實現自動掛載或卸載U盤、SD卡

 

@1: 首先在/etc/init.d/rsC中加入以下語句

 

echo /sbin/mdev >/proc/sys/kernel/hotplug

 

@2:在/etc/下簡曆mdev.conf的檔案,包含以下內容

sd[a-z][0-9]      0:0 666        @(/etc/hotplug/insert.sh $MDEV$SUBSYSTEM)

sd[a-z]           0:0 666        $(/etc/hotplug/remove.sh $MDEV$SUBSYSTEM)

ub[a-z][0-9]      0:0 666        @(/etc/hotplug/insert.sh $MDEV$SUBSYSTEM)

ub[a-z]           0:0 666       $(/etc/hotplug/remove.sh $MDEV $SUBSYSTEM)

mmcblk[0-9]p[0-9] 0:0 666        @(/etc/hotplug/insert.sh $MDEV$SUBSYSTEM)

mmcblk[0-9]       0:0 666        $(/etc/hotplug/remove.sh $MDEV$SUBSYSTEM)

 

@3:在/etc/下建立以下檔案夾hotplug,並在hotplug目錄下建立以下檔案,包含以下內容

 

insert.sh:

if [ -n "$1" ] ; then

   if [ -b /dev/$1 ]; then

       if [ ! -d /mnt/usb/sda1 ]; then

           mkdir -p /mnt/usb/sda1

       fi

       if [ ! -d /mnt/usb/$1 ]; then

           mkdir -p /mnt/usb/$1

       fi

            mount /dev/$1 /mnt/usb/$1

if [ $? -ne 0 ]; then

   rm -rf /mnt/usb/$1

       fi

   fi

fi

remove.sh:

MOUNTS=$(mount | grep $1 | cut -d‘ ‘ -f3)

umount $MOUNTS

rm -rf $MOUNTS

 

SD卡的自動掛載同理:

 

@4:在/etc/下建立以下檔案夾hotplug,並在hotplug目錄下建立以下檔案,包含以下內容

 

insertsd.sh:

 

if [ -n "$1" ] ; then

   if [ -b /dev/$1 ]; then

       if [ ! -d /mnt/mmc/mmcblk0p1 ]; then

           mkdir -p /media

       fi

       if [ ! -d /mnt/mmc/$1 ]; then

           mkdir -p /mnt/mmc/$1

       fi

            mount /dev/$1 /mnt/mmc/$1

if [ $? -ne 0 ]; then

   rm -rf /mnt/mmc/$1

       fi

   fi

fi

 

removesd.sh:

 

MOUNTS=$(mount | grep $1 | cut -d‘ ‘ -f3)

umount $MOUNTS

rm -rf $MOUNTS

 

 

2、

 

date 日月時分年.秒                //設定系統時間

 

hwclock -f /dev/rtc1 -w          //將系統時間寫入到/dev/rtc1中寫到硬體rtc中

 

hwclock -f /dev/rtc1 -s              //將rtc1的時間同步到系統時間中      從硬體rtc中同步到系統中

 

 

3、

 

RTC的hwclock問題的解決:

 

用的pcf8563驅動

 

在arch/arm/mach-nuc970/dev.c中

 

將:

 

static struct i2c_board_info __initdatanuc970_i2c_clients0[] =

{

#ifdef CONFIG_SND_SOC_NAU8822

         {I2C_BOARD_INFO("nau8822",0x1a),},

#endif

};

 

改為:

 

static struct i2c_board_info __initdatanuc970_i2c_clients0[] =

{

#ifdef CONFIG_SND_SOC_NAU8822

         //{I2C_BOARD_INFO("nau8822",0x1a),},

#endif

         {I2C_BOARD_INFO("pcf8563",0x51)},                               //添加pcf8563                          

};

 

之後將:

 

#ifdef CONFIG_I2C_BUS_NUC970_P0

         i2c_register_board_info(0,nuc970_i2c_clients0, sizeof(nuc970_i2c_clients0)/sizeof(structi2c_board_info));

#endif

 

改為:

 

#ifdef CONFIG_I2C_BUS_NUC970_P0

         //i2c_register_board_info(1,nuc970_i2c_clients0, sizeof(nuc970_i2c_clients0)/sizeof(struct i2c_board_info));

         i2c_register_board_info(0,nuc970_i2c_clients0, sizeof(nuc970_i2c_clients0)/sizeof(structi2c_board_info));    //我們使用的是I2C0

#endif

 

 

編譯核心,看核心中的log資訊,來得知pcf8563的rtc,是在/dev/rtc1

 

所以操作hwclock操作這個rtc時,要指定檔案裝置(用-f),否則直接hwclock可能是對應的/dev/rtc0 

 

date 月日時分年.秒

 

hwclock -f /dev/rtc1 -w

 

 

 

4、

 

看門狗無法複位的問題:

 

 

硬體電路上沒有32.768KHZ的晶振,然而核心中看門狗用的卻是這個32.768KHZ晶振提供的時鐘源。

 

解決方案兩種:

 

第一種:硬體電路上加上這個32.768KHZ的晶振。

 

第二種:軟體上,在核心驅動中,讀改寫了看門狗的時鐘來源的寄存器,將其設定為了從PCLK/4096來的時鐘源,也就是75MHZ/4096。

 

在 driver/watchdog/nuc970_wdt.c 中

 

將:

 

static int nuc970wdt_start(structwatchdog_device *wdd)

{

         unsignedint val = 0;

 

         val|= (WTRE | WTE | WTR);

 

         if(wdd->timeout< 2) {

                   val|= 0x5 << 8;

         }else if (wdd->timeout < 8) {

                   val|= 0x6 << 8;

         }else {

                   val|= 0x7 << 8;

         }

         Unlock_RegWriteProtect();

         __raw_writel(val,REG_WDT_CR);

         Lock_RegWriteProtect();

        

         return0;

}

 

修改為:

 

 

static int nuc970wdt_start(structwatchdog_device *wdd)

{

         unsignedint val = 0;

 

         val|= (WTRE | WTE | WTR);

 

         if(wdd->timeout< 2) {

                   val|= 0x5 << 8;

         }else if (wdd->timeout < 8) {

                   val|= 0x6 << 8;

         }else {

                   val|= 0x7 << 8;

         }

//      printk(KERN_INFO"/****************************WDT_START val = 0x%x ************\n", val);//0x783            //why

         Unlock_RegWriteProtect();

         __raw_writel(val,REG_WDT_CR);

         __raw_writel((__raw_readl(REG_CLK_DIV8)& (~0x300)) | 0x200, REG_CLK_DIV8);            //why  PCLK/4096           //設定看門狗的時鐘源

         Lock_RegWriteProtect();

        

         return0;

}

 

將:

static int nuc970wdt_probe(structplatform_device *pdev)函數中的

 

         nuc970_wdd.timeout= 2;                 // default time out =2 sec (2.03)

         nuc970_wdd.min_timeout= 1;

         nuc970_wdd.max_timeout= 9;       // max time out = 9 sec (8.03)

        

修改成:

 

//nuc970_wdd.timeout = 2;              // default time out = 2 sec (2.03)

         nuc970_wdd.timeout= 8;                          //why

         nuc970_wdd.min_timeout= 1;        // min time out = 1 sec (0.53)

         //nuc970_wdd.max_timeout= 9;   // max time out = 9 sec (8.03)

         nuc970_wdd.max_timeout= 14;                       //why

 

 

        

5、Qt移植

 

./configure -prefix /usr/local/qt4.8.3-arm-embedded arm -release -shared -fast -no-largefile -qt-sql-sqlite -qt3support-no-xmlpatterns -no-glib -no-phonon -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg-webkit -qt-zlib -qt-libtiff -qt-libpng -qt-libjpeg -make libs -nomake examples-nomake docs -nomake demo -no-nis -no-cups -iconv -no-dbus -openssl -xplatformqws/linux-arm-g++ -little-endian -qt-freetype -depths 16,24,32 -qt-gfx-linuxfb-qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb-qt-kbd-linuxinput -no-kbd-qvfb -armfpa -no-mouse-qvfb -qt-mouse-linuxtp-qt-mouse-tslib -DQT_QLOCALE_USES_FCVT -I/usr/local/arm/tslib/include -L/usr/local/arm/tslib/lib-confirm-license

 

echo yes | ./configure -prefix/usr/local/qt4.8.3-arm -release -no-largefile -opensource -embedded arm -stl-qt-freetype -qt-sql-sqlite -no-qt3support -no-svg -no-xmlpatterns-no-phonon-backend -no-scripttools -no-phonon -no-script -no-audio-backend-no-multimedia -no-openssl -nomake tools -nomake examples -nomake demos -nomakedocs -xplatform qws/linux-arm-g++ -no-webkit -no-qvfb -no-cups -no-neon-qt-gfx-vnc -no-gfx-multiscreen -qt-kbd-tty -qt-gfx-transformed -no-libtiff-no-libmng -qt-libpng -qt-mouse-pc -no-mouse-linuxtp -qt-mouse-tslib

 

 

 

 

 

 


本文出自 “whylinux” 部落格,謝絕轉載!

NUC972移植工作記錄

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.