[Armadillo:08936] Re: Armadillo-460でSPI使用設定について

Koyo Takenoshita email@hidden
2013年 6月 28日 (金) 18:32:24 JST


Armadillo-460実機で試してみましたが、[Armadillo:05589] の方法の
ままで大丈夫でした。。

Linux kernelの設定が、意図したとおりになっているか、確認してみると
良いかもしれません。
Linux kernelの設定は、下記のようにして調べられます。
[armadillo ~]# zcat /proc/config.gz | grep SPI | grep =y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
CONFIG_SPI_MXC_SELECT1=y
CONFIG_ARMADILLO400_SPI1_CON9=y
CONFIG_ARMADILLO400_SPI1_SS0_CON9_25=y
CONFIG_ARMADILLO400_SPI1_SS1_CON9_11=y
CONFIG_ARMADILLO400_CON9_3_CSPI1_MOSI=y
CONFIG_ARMADILLO400_CON9_5_CSPI1_MISO=y
CONFIG_ARMADILLO400_CON9_11_CSPI1_SS1=y
CONFIG_ARMADILLO400_CON9_13_CSPI1_SCLK=y
CONFIG_ARMADILLO400_CON9_25_CSPI1_SS0=y
CONFIG_ARMADILLO400_CON9_26_CSPI1_RDY=y
CONFIG_SPI=y
CONFIG_SPI_MASTER=y
CONFIG_SPI_BITBANG=y
CONFIG_SPI_MXC=y
CONFIG_SPI_SPIDEV=y

(2013/06/22 13:11), Yamamoto wrote:
> Yamamotoです。
> 
> On Fri, 21 Jun 2013 22:13:24 +0900
> Koyo Takenoshita <email@hidden> wrote:
> 
>> 竹之下です。
>>
>>> 結線図を見たのですが、CSPI1_RDYとCSPI1_SS1が繋がっていません。
>>> CSPI1_SS1は使用しない設定をmenuconfigで出来ますが、CSPI1_RDYが繋がっていないとど
>>> うなるのでしょうか?
>> RDY 信号はつながって無くても大丈夫です。
>>
>>>> mxc_spi: probe of mxc_spi.0 failed with error -22        <== エラーになっている
>>>> CSPI: mxc_spi-2 probed
>> 問題としては、ここですね。
>>
>> -22というのは、-EINVAL です。
>>
>> mxc_spi.0(CSPI1)は、エラーになっていて、
>> mxc-spi-2(CSPI3)はエラーになっていません。
> 
>   mxc-spi-2(CSPI3)は、元の設定のままになっているので大丈夫と思いますし、現状は使用しないので良いので
> すが。
> 
>>
>> probeに失敗していると言っているので、
>> linux-2.6.26-at/drivers/spi/mxc_spi.c::mxc_spi_probe()
>> のどこかで、-EINAVL となっているのだと思います。
>>
>> CSPI1のSS信号が一つも選択されていない状態になっていないでしょうか?
> 
> 参考設定のままにしたっ場合も、CSPI1_SS1を未選択にした場合も同じエラーでした。
> 
> 下記のパッチと実際が何か合ってないのでしょうか?
> ----------------------------------------------------------------------------------------
>   +++ b/arch/arm/mach-mx25/armadillo400.c
>   @@ -553,6 +553,12 @@ static struct mxc_spi_master armadillo400_spi1_data = {
>     };
>     
>     static struct spi_board_info armadillo400_spi1_board_info[] __initdata = {
>   +       {
>   +               .modalias = "spidev",
>   +               .max_speed_hz = 1000000,
>   +               .bus_num = 1,
>   +               .chip_select = 0,
>   +       },
>     };
>     #endif
> ----------------------------------------------------------------------------------------
> 
>>
>> (2013/06/20 18:44), Yamamoto wrote:
>>> Yamamotoです。
>>>
>>> 追加情報です。
>>>
>>> 結線図を見たのですが、CSPI1_RDYとCSPI1_SS1が繋がっていません。
>>> CSPI1_SS1は使用しない設定をmenuconfigで出来ますが、CSPI1_RDYが繋がっていないとど
>>> うなるのでしょうか?
>>>
>>> On Thu, 20 Jun 2013 13:27:03 +0900
>>> Yamamoto <email@hidden> wrote:
>>>
>>>> Yamamotoです。
>>>>
>>>> Armadillo-460でSPI通信をする必要がありmenuconfigで設定したのですが、起動時にエラー
>>>> になっているようで使用できません。
>>>>
>>>> [Armadillo:05589] armadillo-420 でのSPI使用方法について
>>>> を参考にやってみましたが
>>>> --------------------------------------------------------------------------------
>>>> 1. ボードオプションによりCON9のSPI1を選択する
>>>>
>>>> linux-2.6.26-at9のmake menuコンフィギュレーションで、以下のように設定してください。
>>>> UART3のチェックを外さないと、SPIの選択肢が表示されません。
>>>>
>>>> Linux Kernel Configuration
>>>>     System Type  --->
>>>>       Freescale MXC Implementations  --->
>>>>         MX25 Options  --->
>>>>           Armadillo-400 Board options  --->
>>>>             [ ] Enable UART3 at CON9           #チェックを外します
>>>>             [*] Enable SPI1 at CON9            #チェックを入れます
>>>>             [*]   Enable SPI1_SS0 at CON9_25   #SS信号として使いたい場合は、チェックを入れます
>>>>             [*]   Enable SPI1_SS1 at CON9_11   #SS信号として使いたい場合は、チェックを入れます
>>>>
>>>> この時、SPI信号は以下のピンに割り当てられます。helpを参照してください。
>>>> SS信号は、必要な分だけ選択できるようになっています。
>>>>
>>>> CON9_3 : CSPI1_MOSI
>>>> CON9_5 : CSPI1_MISO
>>>> CON9_13: CSPI1_SCLK
>>>> CON9_26: CSPI1_RDY
>>>>
>>>> CON9_25: CPI1_SS0
>>>> CON9_11: CPI1_SS1
>>>>
>>>>
>>>> --- 脱線 ---
>>>> CON9のSPI3を有効にするには、以下のように設定します。
>>>>
>>>>             [ ] Enable UART5 at CON9           #チェックを外します
>>>>             [*] Enable SPI3 at CON9            #チェックを入れます
>>>>             [*]   Enable SPI3_SS0 at CON9_16   #SS信号として使いたい場合は、チェックを入れます
>>>>             [*]   Enable SPI3_SS1 at CON9_18   #SS信号として使いたい場合は、チェックを入れます
>>>>             [*]   Enable SPI3_SS2 at CON9_15   #SS信号として使いたい場合は、チェックを入れます
>>>>             [*]   Enable SPI3_SS3 at CON9_17   #SS信号として使いたい場合は、チェックを入れます
>>>>
>>>> この時、各信号は以下のピンに割り当てられます。
>>>>
>>>> CON9_4: CSPI3_MOSI
>>>> CON9_6: CSPI3_MISO
>>>> CON9_12: CSPI3_SCLK
>>>> CON9_14: CSPI3_RDY
>>>>
>>>> CON9_16: CPI3_SS0
>>>> CON9_18: CPI3_SS1
>>>> CON9_15: CPI3_SS2
>>>> CON9_17: CPI3_SS3
>>>> --- 脱線終わり ---
>>>>
>>>> 2. MXC SPI Masterデバイスドライバを有効にする
>>>>
>>>> linux-2.6.26-at9のmake menuコンフィギュレーションで、以下のように設定してください。
>>>>
>>>> Linux Kernel Configuration
>>>>     Device Drivers  --->
>>>>       [*] SPI support  --->                       #チェックを入れます
>>>>         <*>   MXC CSPI controller as SPI Master   #チェックを入れます(Mではなく、*にする)
>>>>
>>>> 3. スレーブのデバイスドライバとして、spidevを有効にする
>>>>    
>>>> linux-2.6.26-at9のmake menuコンフィギュレーションで、以下のように設定してください。
>>>>
>>>> Linux Kernel Configuration
>>>>     Device Drivers  --->
>>>>       [*] SPI support  --->
>>>>        <*>   User mode SPI device driver support  #チェックを入れます(Mではなく、*にする)
>>>>
>>>> 4. arch/arm/mach-mx25/armadillo400.cのarmadillo400_spi1_board_infoに
>>>>      デバイス情報を追記する
>>>>
>>>> linux-2.6.26-at9arch/arm/mach-mx25/armadillo400.cを以下のように修正してください。
>>>>
>>>> --- a/arch/arm/mach-mx25/armadillo400.c.org
>>>> +++ b/arch/arm/mach-mx25/armadillo400.c
>>>> @@ -553,6 +553,12 @@ static struct mxc_spi_master armadillo400_spi1_data = {
>>>>    };
>>>>    
>>>>    static struct spi_board_info armadillo400_spi1_board_info[] __initdata = {
>>>> +       {
>>>> +               .modalias = "spidev",
>>>> +               .max_speed_hz = 1000000,
>>>> +               .bus_num = 1,
>>>> +               .chip_select = 0,
>>>> +       },
>>>>    };
>>>>    #endif
>>>>
>>>> SPI3を使うときはarmadillo400_spi3_board_infoに追記しbus_num=3となります。
>>>> また、SS1を使うときはchip_select=1となります。
>>>>
>>>> ---
>>>> 以上で、カーネルのコンフィギュレーションは完了です。
>>>> カーネルイメージを作成して、Armadilloに書き込んでください。
>>>>
>>>> 修正後のカーネルで起動すると、/dev/spidev1.0 というデバイスファイルが
>>>> 作成されます。
>>>>
>>>> 1はbus_num、0はchip_selectの番号です。
>>>> --------------------------------------------------------------------------------
>>>>
>>>> カーネルで起動すると、/dev/spidev1.0 というデバイスファイル <-- 作成されず
>>>>
>>>>
>>>>
>>>> 起動時の内容
>>>> --------------------------------------------------------------------------------
>>>> Hermit-At v2.1.4 (armadillo4x0) compiled at 20:49:45, Feb 23 2012
>>>> Uncompressing  kernel.......................................................................................................done.
>>>> Uncompressing ramdisk..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................done.
>>>> Doing console=ttymxc3
>>>> Linux version 2.6.26-at15 (2.6.26) (email@hidden) (gcc version 4.3.2 (Debian 4.3.2-1.1) ) #13 PREEMPT Thu Jun 20 11:28:22 JST 2013
>>>> CPU: ARM926EJ-S [41069264] revision 4 (ARMv5TEJ), cr=00053177
>>>> Machine: Armadillo-460
>>>> Memory policy: ECC disabled, Data cache writeback
>>>> CPU0: D VIVT write-back cache
>>>> CPU0: I cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets
>>>> CPU0: D cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets
>>>> Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
>>>> Kernel command line: console=ttymxc3
>>>> MXC IRQ initialized
>>>> PID hash table entries: 512 (order: 9, 2048 bytes)
>>>> MXC GPT timer initialized, rate = 133000000
>>>> Console: colour dummy device 80x30
>>>> Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
>>>> Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
>>>> Memory: 128MB = 128MB total
>>>> Memory: 108612KB available (3020K code, 221K data, 128K init)
>>>> Mount-cache hash table entries: 512
>>>> CPU: Testing write buffer coherency: ok
>>>> net_namespace: 480 bytes
>>>> NET: Registered protocol family 16
>>>> MXC WDOG1 Enabled
>>>> CPU is i.MX25 Revision 1.2
>>>> Clock input source is 24000000
>>>> MXC GPIO hardware
>>>> GPIO-56 autorequested
>>>> Initializing CPLD: v2
>>>> Using SDMA I.API
>>>> MXC DMA API initialized
>>>> SCSI subsystem initialized
>>>> mxc_spi: probe of mxc_spi.0 failed with error -22        <== エラーになっている
>>>> CSPI: mxc_spi-2 probed
>>>> usbcore: registered new interface driver usbfs
>>>> usbcore: registered new interface driver hub
>>>> usbcore: registered new device driver usb
>>>> MXC I2C driver
>>>> MXC I2C driver
>>>> MXC I2C driver
>>>> MC34704 regulator successfully probed
>>>> mc34704 0-0054: Loaded
>>>> NET: Registered protocol family 2
>>>> IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
>>>> TCP established hash table entries: 4096 (order: 3, 32768 bytes)
>>>> TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
>>>> TCP: Hash tables configured (established 4096 bind 4096)
>>>> TCP reno registered
>>>> NET: Registered protocol family 1
>>>> checking if image is initramfs...it isn't (bad gzip magic numbers); looks like an initrd
>>>> Freeing initrd memory: 17840K
>>>> usb: Host 2 host (serial) registered
>>>> usb: DR host (utmi) registered
>>>> msgmni has been set to 247
>>>> io scheduler noop registered
>>>> io scheduler cfq registered (default)
>>>> mx2fb: Unable to set clock to 0
>>>> Console: switching to colour frame buffer device 60x17
>>>> mxc_sdc_fb mxc_sdc_fb.0: fb0: DISP0 BG fb device registered successfully.
>>>> mxc_sdc_fb mxc_sdc_fb.0: fb1: DISP0 FG fb device registered successfully.
>>>> Serial: MXC Internal UART driver
>>>> mxcintuart.1: ttymxc1 at MMIO 0x43f94000 (irq = 32) is a Freescale MXC
>>>> mxcintuart.2: ttymxc2 at MMIO 0x5000c000 (irq = 18) is a Freescale MXC
>>>> mxcintuart.3: ttymxc3 at MMIO 0x50008000 (irq = 5) is a Freescale MXC
>>>> console [ttymxc3] enabled
>>>> mxcintuart.4: ttymxc4 at MMIO 0x5002c000 (irq = 40) is a Freescale MXC
>>>> brd: module loaded
>>>> loop: module loaded
>>>> Freescale FlexCAN Driver
>>>> FEC Ethernet Driver
>>>> PPP generic driver version 2.4.2
>>>> Linux video capture interface: v2.00
>>>> usbcore: registered new interface driver uvcvideo
>>>> USB Video Class driver (v0.1.0)
>>>> Driver 'sd' needs updating - please use bus_type methods
>>>> armadillo-nor: Found 1 x16 devices at 0x0 in 16-bit bank
>>>>    Intel/Sharp Extended Query Table at 0x010A
>>>>    Intel/Sharp Extended Query Table at 0x010A
>>>>    Intel/Sharp Extended Query Table at 0x010A
>>>>    Intel/Sharp Extended Query Table at 0x010A
>>>>    Intel/Sharp Extended Query Table at 0x010A
>>>> Using buffer write method
>>>> Using auto-unlock on power-up/resume
>>>> cfi_cmdset_0001: Erase suspend on write enabled
>>>> armadillo-nor: use default partitions(4)
>>>> Creating 4 MTD partitions on "armadillo-nor":
>>>> 0x00000000-0x00020000 : "nor.bootloader"
>>>> 0x00020000-0x00220000 : "nor.kernel"
>>>> 0x00220000-0x01fe0000 : "nor.userland"
>>>> 0x01fe0000-0x02000000 : "nor.config"
>>>> fsl-ehci fsl-ehci.0: Freescale On-Chip EHCI Host Controller
>>>> fsl-ehci fsl-ehci.0: new USB bus registered, assigned bus number 1
>>>> fsl-ehci fsl-ehci.0: irq 35, io mem 0x53ff4400
>>>> fsl-ehci fsl-ehci.0: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004
>>>> usb usb1: configuration #1 chosen from 1 choice
>>>> hub 1-0:1.0: USB hub found
>>>> hub 1-0:1.0: 1 port detected
>>>> fsl-ehci fsl-ehci.1: Freescale On-Chip EHCI Host Controller
>>>> fsl-ehci fsl-ehci.1: new USB bus registered, assigned bus number 2
>>>> fsl-ehci fsl-ehci.1: irq 37, io mem 0x53ff4000
>>>> fsl-ehci fsl-ehci.1: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004
>>>> usb usb2: configuration #1 chosen from 1 choice
>>>> hub 2-0:1.0: USB hub found
>>>> hub 2-0:1.0: 1 port detected
>>>> Initializing USB Mass Storage driver...
>>>> usbcore: registered new interface driver usb-storage
>>>> USB Mass Storage support registered.
>>>> input: gpio-keys as /devices/platform/gpio-keys.0/input/input0
>>>> i2c /dev entries driver
>>>> rtc-s35390a 3-0030: rtc core: registered rtc-s35390a as rtc0
>>>> i2c-gpio i2c-gpio.3: using pins 128 (SDA) and 129 (SCL, no clock stretching)
>>>> mxsdhci: MXC Secure Digital Host Controller Interface driver
>>>> mxsdhci: MXC SDHCI Controller Driver.
>>>> mmc0: SDHCI detect irq 159 irq 9 INTERNAL DMA
>>>> Registered led device: red
>>>> Registered led device: green
>>>> Registered led device: yellow
>>>> usbcore: registered new interface driver usbhid
>>>> usbhid: v2.6:USB HID core driver
>>>> i.MX ADC at 0x50030000 irq 46
>>>> ip_tables: (C) 2000-2006 Netfilter Core Team
>>>> TCP cubic registered
>>>> NET: Registered protocol family 17
>>>> NET: Registered protocol family 15
>>>> can: controller area network core (rev 20071116 abi 8)
>>>> NET: Registered protocol family 29
>>>> can: raw protocol (rev 20071116)
>>>> can: broadcast manager protocol (rev 20080415)
>>>> Static Power Management for Freescale i.MX25
>>>> input: imx_adc_ts as /devices/virtual/input/input1
>>>> i.MX ADC input touchscreen loaded.
>>>> rtc-s35390a 3-0030: setting system clock to 2013-06-20 04:09:13 UTC (1371701353)
>>>> RAMDISK: ext2 filesystem found at block 0
>>>> RAMDISK: Loading 17840KiB [1 disk] into ram disk... done.
>>>> VFS: Mounted root (ext2 filesystem).
>>>> Freeing init memory: 128K
>>>> mmc0: new high speed SDHC card at address 59b4
>>>> mmcblk0: mmc0:59b4 SDC   3855360KiB
>>>>    mmcblk0: p1
>>>> init started:  BusyBox v1.00 (2012.09.19-05:03+0000) multi-call binary
>>>> Starting fsck for root filesystem.
>>>> fsck 1.25 (20-Sep-2001)
>>>> ext2fs_check_if_mount: No such file or directory while determining whether /dev/ram0 is mounted.
>>>> /dev/ram0: clean, 966/1176 files, 16207/17840 blocks
>>>> Checking root filesystem:                                       done
>>>> Remounting root rw:                                             done
>>>> Mounting proc:                                                  done
>>>> Mounting usbfs:                                                 done
>>>> Mounting sysfs:                                                 done
>>>> Cleaning up system:                                             done
>>>> Running local start scripts.
>>>> Starting udevd:                                                 done
>>>> Loading /etc/config:                                            done
>>>> Changing file permissions:                                      done
>>>> Configure /home/ftp:                                            done
>>>> Starting syslogd:                                               done
>>>> Starting klogd:                                                 done
>>>> Starting basic firewall:                                        done
>>>> Setting hostname:                                               done
>>>> Configuring network interfaces: fec: PHY @ 0x0, ID 0x0007c0f1 -- LAN8720
>>>> eth0: link down
>>>>                                                                   done
>>>> Starting inetd:                                                 done
>>>> Setting at-cgi:                                                 done
>>>> Starting lighttpd:                                              doneeth0: link up, 100Mbps, full-duplex
>>>>
>>>> Creating avahi.services:                                        done
>>>> Starting avahi.daemon:                                          done
>>>> Mounting ramfs /home/ftp/pub:                                   done
>>>> --------------------------------------------------------------------------------
>>>>
>>>> なにの設定が悪いのか、チェックすべきところを教えていただけませんでしょうか?
>>>>
>>>>
>>>> _______________________________________________
>>>> armadillo mailing list
>>>> email@hidden
>>>> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>>>>
>>>
>>>
>>> _______________________________________________
>>> armadillo mailing list
>>> email@hidden
>>> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>>>
>>
>> -- 
>> Koyo Takenoshita
>>
>> _______________________________________________
>> armadillo mailing list
>> email@hidden
>> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
> 
> (^_^)v(^_^)/~(^_^)v(^_^)/~
>       山本 伸夫
>     email@hidden
> (^_^)/~(^_^)v(^_^)/~(^_^)v
> 

-- 
Koyo Takenoshita




armadillo メーリングリストの案内