اطلاعیه

Collapse
No announcement yet.

همه ی اقداماتی که برای خواندن یک سکتور از sd card لازم داریم - چی هست ؟!

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    همه ی اقداماتی که برای خواندن یک سکتور از sd card لازم داریم - چی هست ؟!

    سلام دوستان -
    حافظه ی sd card پیچیده هست به خاطر همین معمولا برای راه اندازی از توابع آماده استفاده می کنیم .ولی اینجا قرار نیست از توابع آماده استفاده کنیم
    چرا ؟ یک مثال میزنم - lcd گرافیکی برای راه اندازی و استفاده تو هر زبان یک سری تابع دارد . ما برای استفاده دو راه داریم راه اول تک تک اون توابع رو یاد بگیریم راه دوم استفاده از جدول زیر
    حالا با دستورات بالا هر نوع lcd رو می تونیم راه اندازی کنیم . مزیت ها : 1 - با هر زبانی و هر نوع سخت افزاری می تونیم lcd رو فعال کنیم. 2-توابع به صورت استاندار نوشته شده در صورتی که سخت افزار ها (lcd) با هم متفاوت هستند مثلا سرعت بار گذاری در حالتی که توابع را خودمان بنویسیم چند برابر است 3- به بعضی امکانات دست پیدا می کنیم مثلا استفاده از ram درون lcd گرافیکی4- یادگیری توابع کلی وقت میگیره و آخرش هم استرس این رو داریم که شاید تابعی جا انداخته ایم 5-اگه زبان برنامه نویسی را عوض کنیم یا تعویض نرم افزار بیشتر اون توابعی رو که یاد گرفتیم(وقت گذاشتیم )رو باید بریزیم دور 6-از همه بدتر نمیدانیم داخل سیستم چه اتفاقاتی می افتد مثلا تابع تاخیر از تایمر استفاده می کند و تو کار اون تایمر اختلال ایجاد می کند. و....
    به هر حال بعضی ها مخالف این حرف ها هستند. میگن چرا چرخ رو از اول بسازیم یا بهتره وقتمان را صرف موضوعی مهمتر از ذخیره و بازیابی اطلاعات بکنیم و .....


    SD card هم مثل lcd گرافیکی یک سری جدول دارد که همه چیز به طور خلاصه درونش هست .
    هدف ما پیدا کردن اون جدول ها و فارسی کردن است .

    نظرتان را بگویید و اگر این کار درست است کمکم کنید و به این سوال ها پاسخ بدید.
    چه کد هایی بفرستیم تا sd فعال شود ؟ sd چند نوع رجیسیتر داخلی دارد و وظیفه ی هر رجیستر چیست ؟ خواندن و نوشتن یک سکتور به ساده ترین روش توسط دستورات اسمبلی چطور است ؟

    (تایپستی در این رابطه - کتاب - فیلم - وب سایت - عکس )
    جدیدترین ویرایش توسط antipa; ۱۰:۰۲ ۱۳۹۵/۰۶/۲۸.

    #2
    پاسخ : همه ی اقداماتی که برای خواندن یک سکتور از sd card لازم داریم - چی هست ؟!

    شکل : بلوک دیاگرام داخلی sd card ها .

    دیدگاه


      #3
      پاسخ : همه ی اقداماتی که برای خواندن یک سکتور از sd card لازم داریم - چی هست ؟!

      با سلام و درود
      مقداری پیرامون راه اندازی حافظه SD:
      1- آموزش جامع اتصال SD CARD به آردوینو
      2- آموزش اتصال SD CARD به میکرو کنترلر AVR جلسه۱
      3- http://www.eca.ir/forums/thread22165.html
      جدیدترین ویرایش توسط فکر; ۱۷:۴۰ ۱۳۹۵/۰۶/۲۷.

      دیدگاه


        #4
        پاسخ : همه ی اقداماتی که برای خواندن یک سکتور از sd card لازم داریم - چی هست ؟!

        1- آموزش جامع اتصال SD CARD به آردوینو
        2- آموزش اتصال SD CARD به میکرو کنترلر AVR جلسه۱
        3- http://www.eca.ir/forums/thread22165.html[/QUOTE]
        سلام و ممنون از راهنمایی تون
        آدرس هایی که دادید رفتم و مطاله کردم - همه از توابع و کتاب خانه های آماده استفاده کردند
        اگه بتونیم کسی را پیدا کنیم که برنامه خواندن sd card را از صفر خودش نوشته باشد و کمکمان کند مشکلمان حل می شود
        یک مهندس واقعی الکترونیک و کامپیوتر

        دیدگاه


          #5
          پاسخ : همه ی اقداماتی که برای خواندن یک سکتور از sd card لازم داریم - چی هست ؟!

          SD card یعنی Secure Digital Memory Card .
          SD نوع پیشرفته ی یا تکامل یافته ی MMC card است.
          انتقال اطلاعات از master یا host به sd به صورت بلوک های 512 بایتی می باشد
          چرا در مموری کارت ها حافظه به صورت بلوکی یا sector است؟ همه ی حافظه ها یک بلوک مشترکی دارند و آن decoder است. همه می دانیم مدار دیکدر در صورتی که n ورودی داشته باشد n^2 خروجی دارد. در RAM خروجی دیکدر با یک سیم وصل است به یک حافظه ی 8 بیتی. ولی در FLASH خروجی هر دیکدر یک بلوک 512 بایتی را فعال می کند. به خاطر شلوغی کمتردر chip و ارسال و دریافت سریع تر(جلوگیری از ارسال آدرس طولانی )از بلوک یا sector استفاده می کنند

          آدرس دهی بلوک : وقتی از بلوک حرف می زنیم نیاز به یک جدول آدرس دهی خاصی داریم .
          سیستم فایل SD در حالت پیش فرض FAT16 یا FAT12 با FDISK – درصورتی که ظرفیت بیشتر از 4G باشد سیستم فایلFAT 32 است

          ارتباط با SD به دو صورت است : mode SD که به صورت پیشفرض است و mode SPI

          ارتباط با SD بدین صورت است که ابتدا دستور از CPU به SD فرستاده می شود . در SD فرمان فرستاده شده پردازش می شود
          و پاسخ فرمان از SD به CPU ارسال می گردد .

          دستوری که به SD می فرستیم طولش 48 بیت است .تصویر (2)
          2 بیت شروع اول صفر و یک
          6 بیت شماره ی دستور
          32 بیت argument
          7 بیت CRC ( cyclic redundancy check ) معمولا توسط sd نا دیده گرفته می شود ! شامل کد هایی هست که sd
          از صحت فرمان مطمئن شود .
          1بیت stop با مقدار 1

          وقتی دستوری به sd می فرستیم باید 8 کلاک دیگر بفرستیم تا sd روی فرمانمان پردازش را انجام دهد

          پس از این که پردازش انجام شود Sd برای cpu یک جوابی می فرستد که معمولا 8 بیت است مگر در دو
          حالت خاص که طول commend ارسالی از sd به cpu طولش 40 بیت است



          تصویر (2) : شکل فریم بلوک token یا .. از m.r به مموری کارت
          antipa.blog.ir

          دیدگاه


            #6
            پاسخ : همه ی اقداماتی که برای خواندن یک سکتور از sd card لازم داریم - چی هست ؟!

            سایت خلیلی سنگینه تا بخواد لود شه دو ساعت طول می کشه کلی از ترافیک هم مصرف می کنه .جالبه اینه که وقتی میزنی ریفرش شه دو باره از صفر همه ی عکس ها و تبلیغات و کد ها باید لود شن . . عکس ها هم که ماشال همه فول اج دی اند . انگار اینجا سرعت اینترنت جاپنو داره . سرعت 30 کیلو در یک نیم دقیقه که نمی تونه . مسعولین کجایید ؟

            خوب ادامه ی بحث رو می ادماییم .

            sd card یک جوابی میفرستد که معمولا 8 بیت است .

            برای این که به sd متصل بشوشم باید sd را وارد مد spi کنیم برای این کار ابتدا پاییه ی sc ( انتخاب چیپ ) را یک می کنیم سپس 74 پالس میفرستیم به پایه ی SCLK یا بیشتر کی به کیه برای رند شدن 100 پالس می فرستیم .


            مرحله بعد پایه ی sc را صفر و دستور 0 رو ارسال می کنیم. همیشه طول دستور ارسالی باید 48 بیت باشد بالا توضیح داده بودم

            دستور 0 یا CMD0 به صورت زیر است (اگر بعد از 10 سال تصویر باز نشد تو اینترنت سرچ کنید CMD0 - من که میدونیم سایت آپلود هفته ی دیگه لینک همه ی عکس ها رو پاک می کنه وقتی کار راه اندازی تمام شد فایل PDF خواهم گذاشت )


            با فرستادن دستور بالا اگه پایه ی SC صفر باشد SD وارد مد SPI می شود . بعد از این که 7 یا 8 بار دیگه پایه ی SCLK را صفر و یک کنیم .SD یک کدی داخلش تولید می شود برای بیرون کشیدن اون کد باید SCLK بفرستیم و هم زمان پایه MISO را بخوانیم

            خط MISO در حالت معمول مقدارش یک هست . وقتی صفر شود یعنی قراره SD یک چیزی برای ما بفرستد .
            COMMEND دریافتی به غیر از دو حالت خاص 8 بیت است .تصویر 3

            هر بیت معرف یک ERROR یا ... است اگر مقدار 00000001 دریافت کنیم یعنی همه چیز حله

            تصویر 3 : فرمت جوابیه هر دستوری که به sd card می فرستیم به صورت بالا است



            در هر بار ارتباطی که cpu با sd دارد برنامه ی ما باید پردازش روی این بیت ها را انجام دهد . در صورتی وجود error دوباره عمل قبلی را تکرار کند.

            دیدگاه


              #7
              پاسخ : همه ی اقداماتی که برای خواندن یک سکتور از sd card لازم داریم - چی هست ؟!

              خوب از امروز فاز جدید رو شروع می کنم . راه اندازی سخت افزاری sd card - در صورت اشتباه بودن متد و راه ی که می رم راهنماییم کنید .

              هدف : ساخت یک شیفت دهنده ی 47 یبتی + 8 کلاک فرصت برای پروسه ی داخل sd - و در نهاییت مقدار همه ی ثبات ها را روی lcd نمایش دادن
              برنامه با cpp خواهد بود .از تایمر 1 میکرو برای تولید کلاک ثابت استفاده خواهد شد . توجه داشته باشید که کلاک sd نباید کمتر از 100kh باشد .بنا براین اگر بخواهیم از avr استفاده کنیم باید کریستال 16 بزاریم .

              مرجع تصویر زیر است کامنت ها یا دستورات cmd به ترتیب برای sd فرستاده می شوند و . ....

              دیدگاه


                #8
                پاسخ : همه ی اقداماتی که برای خواندن یک سکتور از sd card لازم داریم - چی هست ؟!

                هرچند که الان 3 ساله از این اموز ش نصفه و نیمه می گذره .خوب دمت گرم.واقعا دمت گرم.
                اصولی توضیح دادید.
                eshop-hodhod.ir

                دیدگاه

                لطفا صبر کنید...
                X