PDA

View Full Version : سوال: نحوه تشخیص اتصال فلش مموری به کامپیوتر و تشخیص برنامه از داخل فلش مموری؟



asgharjoon2
یک شنبه 21 اسفند 1390, 16:44 عصر
من میخوام یه برنامه بنویسم که تا فلش مموری به کامپیوتر وصل د تشخیص بده که وصله و کاریو انجام بده. اما این برنامه قراره داخل فلش مموری باشه و به کامپیوتر من وصل نمیشه به کامپیوتر شخص دیگری وصل میشه که روی اون کامپیوتر هیچ برنامه ای نصب نیست.
یعنی اینکه نمیخوام برنامه ای داخل کامپیوتر نصب کنم که متصل شدن فلش مموریو بفهمم میخوام برنامه ای داخل فلش مموری بریزم که به محض اتصال به هر کامپیوتری اجرا بشه و یک سری عملیات انجام بده.
تشخیص اتصال فلش مموری به کامپیوتر نه کامپیوتر به فلش مموری.
امیدوارم منظورم رو رسونده باشم.

mehdi zanjani
یک شنبه 21 اسفند 1390, 17:02 عصر
تو این تاپیک (http://barnamenevis.org/showthread.php?64210-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%DA%A9%D9%88%DA%86%DA%A9-%D9%88-%D9%85%D9%81%D9%8A%D8%AF-%D8%AF%D8%B1-%D8%B3%D9%8A-%D8%B4%D8%A7%D8%B1%D9%BE/page81) اون چیزی کی میخوای هست.

mehdi zanjani
یک شنبه 21 اسفند 1390, 17:04 عصر
البته عذر میخوام عکس چیزی که شما میخوای تو اون تاپیک هست!!!

asgharjoon2
یک شنبه 21 اسفند 1390, 17:13 عصر
عزیزم اینو خودم نوشتم. من دقیقا عکس این کارو میخوام بکنم

mehdi zanjani
یک شنبه 21 اسفند 1390, 18:44 عصر
:خجالت::لبخند: ببخشید من حواسم نبود!! خب 1 پیشنهاد اکثر ویروس ها هم از همین روش استفاده میکنن وقتی فلش رو میزنی به کامپیوتر هدف برنامه تو با فایل اتوران اجرا کنه!!! فکر کنم قبلا 1 باز تو csharpcorner همچین چیزی دیده بودم که برنامه با اتوران اجرا میشد!!!

asgharjoon2
یک شنبه 21 اسفند 1390, 19:20 عصر
من میخوام بدون زدن حتی یک کلیک این اتفاق بیوفته. از برقی که وارد فلش میشه شاید بشه این کارو کرد اما چجوری نمیدونم

asgharjoon2
یک شنبه 21 اسفند 1390, 21:46 عصر
رو ویندوز 7 کار نمیده این روش

mehdi zanjani
یک شنبه 21 اسفند 1390, 21:52 عصر
با اتوران مطمئنن میشه ولی با برق پورت usb فکر نمیکنم یعنی هیچ ایده ای به ذهن من نمیاد شاید اگه برنامه نویس C بودیم زودتر به نتیجه میرسیدیم چون C با سخت افزار رابطه بیشتری داره!
بذار csharpcorner ی سرچ بزنم قبلا دیده بودم دانلودم کرده بودم ولی انقد فایل ها زیاده از سایت پیدا کردن راحت تره !

debugger
دوشنبه 22 اسفند 1390, 00:52 صبح
نمیشه عمرا

mehdi zanjani
دوشنبه 22 اسفند 1390, 01:06 صبح
نمیشه عمرا


منم باهات موافقم ولی خب شاید بشه شاید !!!

asgharjoon2
دوشنبه 22 اسفند 1390, 12:17 عصر
اگه یه فلش مموری خودمون بسازیم میتونیم یه برنامه داخل یه ای سی بنویسیم که تا برق وصل شد برنامرو اجرا کنه

mehdi zanjani
دوشنبه 22 اسفند 1390, 18:17 عصر
منم همونو میگم با c میشه چون با سخت افزار مستقیم کار میکنه ولی سی شارپ اینجور نیست!

alimahdifar
دوشنبه 22 اسفند 1390, 19:28 عصر
بانرم افزارهایی که اتوران می سازند خیال خودتو راحت کن سریع و آسان.C لازم نیست.نظر من اینه

asgharjoon2
دوشنبه 22 اسفند 1390, 21:54 عصر
با نرم افزار که نمیشه که. اونم باید اجرا بشه . من میخوام خود به خود اجرا بشه. چیزایی میگیا

mehdi zanjani
دوشنبه 22 اسفند 1390, 22:15 عصر
آقای asgharjoon من خیلی گشتم برات ولی متاسفانه چیزی که شما میخواید با سی شارپ امکان پذیر نیست مگه اینکه از فایل اتوران استفاده کنید!!!

asgharjoon2
دوشنبه 22 اسفند 1390, 22:43 عصر
اگه با avr یه ای سی اضافه کنیم به یه فلش اونوقت فکر میکنین بشه؟ یعنی خودمون بریم یه فلش مموری بسازیم.

mehdi zanjani
سه شنبه 23 اسفند 1390, 01:00 صبح
ببینید مشکل ما سی شارپی ها اینه که زیاد با سخت افزار درگیر نمیتونیم بشیم تا الانم که الانه برنامه های میکروکنترولر ها و ربات هارو با C مینویسن !! من ایده یا طرحی به ذهنم نمیرسه ولی همچنان در کند و کاوم به نتیجه ای رسیدم حتما کمک میکنم!!! چرا با اتوران کار نمیکنید اتوران ساده ترین راهه!!!

asgharjoon2
سه شنبه 23 اسفند 1390, 12:16 عصر
ممنون از محبتتون. اولا اتوران داخل ویندوز 7 کار نمیده دوما اتوران حتما باید کاربر کلیک کنه تا اجرا بشه خود به خود اجرا نمیشه. من میخوام برنامه خود به خود اجرا بشه بدون یه کلیک یا حتی اجازه کاربر . کسی سخت افزار کار نکرده اینجا؟

Esmail Solhkhah
چهارشنبه 24 اسفند 1390, 01:32 صبح
وقتی شما یه فلش دیسک رو به پورت وصل کردید سیستم عامل اونو شناسایی کرده و سعی میکنه با استفاده از اطلاعاتی که

از طریق Descriptor ها گرفته منجمله سازنده - ورژن محصول - شماره سریال، درایور مربوطه رو از طریق فایلهای inf موجود

خودش پیدا کرده و لود کنه اگه درایور مربوطه شناسایی شد کنترل رو به درایور داده و درایور دوباره اطلاعات توضیح دهنده ها رو

از دیوایس درخواست میکنه و معمولا اینجا کار تمومه و از این به بعد برنامه های کاربردی از طریق API های سطح USER با درایور

ارتباط برقرار کرده و درایور ارتباط رو با سخت افزار انجام میده،اگه درایور شناسایی نشد اینجا معمولا اون صفحه ای رو میبینید که

سیستم عامل درخواست درایور برای این دیوایس رو میکنه و اگه دقت کنید مارک فلش رو هم نشون میده چون قبلا با استفاده

از اطلاعاتی که از Descriptor گرفته، سازنده رو شناسایی کرده.

کاری که شما میخواهید انجام بدید دو فاز داره

1:سخت افزار

2:نرم افزار

فاز 1: سخت افزار شامل یه کنترل کننده USB و یه میکروکنترلر و حافظه (پیکربندیهای دیگه ای هم میتونه باشه ولی کنترل کننده

USB اجباریه)

فاز 2: نرم افزار شامل درایور کنترل کننده USB (به غیر از برنامه ای که میخاید ضمیمه کنید)

بر اساس مطالبی که شما گفتید میخاید یه فلش دیسک رو خودتون طراحی کنید، اگه از کنترل کننده های موجود استفاده کنید

که استانداردهای USB رو مو به مو پیاده سازی کردن دستتون بستس چون کنترل کننده قبلا پروگرم شده و درایور مربوطه بر این

اساس نوشته شده (اگه باگی تو درایور مربوطه پیدا کردید شاید (شاید) بتونید کاری بکنید مثلا از بایت 12 Device Descriptors

که فیلد bcdDevice هست استفاده کنید ، یه چیزی تو مایه های تغییر آدرس برگشت روتینها در پشته که ویروسها برای اجرای

کد خودشون انجام میدن)

تو فاز نرم افزار اگه دیوایس درایور برا این سخت افزار رو خودتون نوشتید با توجه به اینکه نمیخواهید هیچ چیزی قبل از وصل کردن

فلش به سیستم رو سیستم عامل نصب کنید پس باید یه قرارداد با عمو گیتس ببندید تازه اون موقع شما رو معرفی میکنه به

بروبچه های WHQL (http://en.wikipedia.org/wiki/WHQL_Testing) و شما طبق قرارداد یه نمونه از سخت افزار و درایورتون رو باید بهشون بدید تا تو سیستم عامل قرار بدن اگه

قرارداد عقد شد فلش شما از اون به بعد تو هر سیستمی وصل شد درایورش نصب میشه (این به فرض ایرانی نبودن شماست،

بدلیل تحریم همون اول محترمانه میگن ساری)

همین درایورنویسی رو خودتون میخاید انجام بدید ؟ یه سر به این تاپیک (http://barnamenevis.org/showthread.php?325728-%D9%86%D8%AD%D9%88%D9%87-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%D8%B3%D8%A7%D8%AE%D8%AA-%D9%BE%D8%B1%DB%8C%D9%86%D8%AA%D8%B1-%D9%85%D8%AC%D8%A7%D8%B2%DB%8C&p=1433562&viewfull=1#post1433562) بزنید یه چیزایی درموردش نوشتم ببینید چه خبره

(البته جسارت نباشه شاید شما درایور نویسی بلد باشید بنده با فرض عدم آشنایی شما با درایور نویسی این لینک رو دادم)

در مورد سخت افزار چی میدونید که هزینش چقدر میشه به ازای هر فلش ؟ دست کم 10 برابر قیمت فلشهای موجود تازه اینجا

با توجه به اختصاصی بودن کار شما نمیتونید از کنترل کننده های موجود استفاده کنید و باید کنترل کننده رو خودتون از اول

طراحی کنید مثلا با FPGA (http://en.wikipedia.org/wiki/Field-programmable_gate_array) های Xilinx (http://www.xilinx.com/) و با زبان VHDL (http://en.wikipedia.org/wiki/VHDL)

این کار شما یه پروژه بزرگه تو یه تاپیک نمیشه حلش کرد.

درکل:

حداقل مواد لازم جهت تهیه یه فلش دیسک اختصاصی با شرایط شما

1:آشنایی با USB و استانداردهای اون

2:آشنایی با درایورنویسی

3:آشنایی با زبان VHDL و صدالبته FPGA و الکترونیک

4:کمک از یه غیر ایرانی جهت عقد قرارداد با مایکروسافت

موفق باشید.

asgharjoon2
چهارشنبه 24 اسفند 1390, 14:27 عصر
قسمت عمو گیتسو نمیشه دور زد تا قرار داد نبست. چون اونها هم به نرم افزار های خاصی اکی میدن. در ضمن من میخوام نه این نرم افزار هر نرم افزاری که من بخوام داخلش قرار بدم. اون جای دور زدن نداره؟

Esmail Solhkhah
چهارشنبه 24 اسفند 1390, 16:45 عصر
قسمت عمو گیتسو نمیشه دور زد تا قرار داد نبستاگه شما بخاید که درایورتون جزو درایورهای داخلی سیستم عامل های مایکروسافت باشه راه اصولیش اینه

مثل درایورهای شرکتهای HP ، سونی و ... که دیدید عمدتا با نصب دیوایسهای این شرکتها اتوماتیک درایورش شناخته میشه، کلک مرغابی هم میشه سوار کرد ولی با توجه به

مطالبی که شما گفتید این کلک مرغابی به کار شما نمیاد.



چون اونها هم به نرم افزار های خاصی اکی میدن.نمونه ؟


در ضمن من میخوام نه این نرم افزار هر نرم افزاری که من بخوام داخلش قرار بدم. اون جای دور زدن نداره؟

اگه خودتون کنترلر USB رو طراحی کردید و درایورش رو نوشتید دستتون بازه و میتونید هر برنامه ای رو خاستید تو این فلش قرار بدید (البته بصورت کد زبان ماشین و به شرط ساپرت

شدن اجرا توسط سیستم عامل مربوطه)

موفق باشید.