рд░реЗрдб рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рдХреЗ рдХрд╕реНрдЯрдо рдЯрд╛рдпрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ

рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ рд░реЗрдб рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рдореЗрдВ рдПрдХ рд╣рдЬрд╛рд░ рдЫреЛрдЯреА рдЪреАрдЬреЛрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рдЬрд╛рдВрдЪ рдХреА, рд▓реЗрдХрд┐рди рд╡реЙрд▓реНрдпреВрдо рдореЗрдВ рд╡реГрджреНрдзрд┐ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдЕрдЧрд▓реА рдмрд╛рд░ рдЕрднреНрдпрд╛рд╕ рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░ рджрд┐рдпрд╛ред рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рдЬреЛ рд▓реЛрдЧ рд░реЗрдб рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рднреА рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рдЬреНрдЮрд╛рди рдкрд╛ рд╕рдХреЗрдВрдЧреЗ, рдЕрд░реНрдерд╛рддреН, рд▓рд┐рдирдХреНрд╕ рд╕реЗ рдпреВрдПрд╕рдмреА рдбреНрд░рд╛рдЗрд╡ рдореЗрдВ рд╡реЗрдВрдбрд░ рдХрдорд╛рдВрдб рдХреЛ рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рдХреА рдкрджреНрдзрддрд┐, рдХреНрдпреЛрдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рдореЗрдВ рдПрд╕рдЯреАрдПрдо 32 рдирд┐рдпрдВрддреНрд░рдХ рдПрдХ рдПрд╕рдбреА рд░реАрдбрд░ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдбреНрд░рд╛рдЗрд╡ред



рдкрд┐рдЫрд▓реЗ рдЪрдХреНрд░ рд▓реЗрдЦ
  1. Redd рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд FPGAs рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ "рдлрд░реНрдорд╡реЗрдпрд░" рдХрд╛ рд╡рд┐рдХрд╛рд╕, рдФрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдореЗрдореЛрд░реА рдЯреЗрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрд┐рдмрдЧрд┐рдВрдЧред
  2. Redd рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд FPGAs рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ "рдлрд░реНрдорд╡реЗрдпрд░" рдХрд╛ рд╡рд┐рдХрд╛рд╕ред рднрд╛рдЧ 2. рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛрдбред
  3. FPGA рдЖрдзрд╛рд░рд┐рдд рдкреНрд░реЛрд╕реЗрд╕рд░ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдореВрд▓ рдХрд╛ рд╡рд┐рдХрд╛рд╕ред
  4. FPGA рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдХреЗрдВрджреНрд░реАрдп рдкреНрд░реЛрд╕реЗрд╕рд░ рд░реЗрдб рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕ред
  5. Redd рдкрд░рд┐рд╕рд░ рдХреЗ FPGA рдореЗрдВ рд╕реАрдкреАрдпреВ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкрд╣рд▓рд╛ рдкреНрд░рдпреЛрдЧред
  6. рдореАрд░рд╛ рдХреНрд╡рд╛рд░реНрдЯрд░рд╕реЗрд▓, рдпрд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреИрд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЬреАрд╡рди рдореЗрдВ рдЖрдпрд╛ рд╣реИред
  7. рд░реЗрдб рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЕрдиреБрдХреВрд▓рди рдХреЗ рддрд░реАрдХреЗред рднрд╛рдЧ 1: рдХреИрд╢ рдкреНрд░рднрд╛рд╡ред
  8. рд░реЗрдб рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЕрдиреБрдХреВрд▓рди рдХреЗ рддрд░реАрдХреЗред рднрд╛рдЧ 2: рдЧреИрд░-рдХреИрд╢реНрдб рдореЗрдореЛрд░реА рдФрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдмрд╕ рд╕рдВрдЪрд╛рд▓рдиред
  9. рд╡реНрдпрд╛рдкрдХ рдХреЛрдб рдЕрдиреБрдХреВрд▓рди: рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдбрд╝реА рдЬрдирд░реЗрдЯрд░ рдХреА рдЬрдЧрд╣ред
  10. рдПрдлрдЯреАрдбреАрдЖрдИ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рд░реЗрдб рдмрд╕реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ
  11. рдХрд╕реНрдЯрдо рдЯрд╛рдпрд░ рдЬрдЯрд┐рд▓ рд░реЗрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ


рдХрдорд╛рдВрдб рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдЧреАрдХрд░рдг рд╡рд░реНрдЧреАрдХреГрдд рдХрд░реЗрдВ


рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдПрдХ рднреМрддрд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдПрдХ рдХрдорд╛рдВрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╕реАрдбреА / рдбреАрд╡реАрдбреА / рдмреАрдбреА рдбреНрд░рд╛рдЗрд╡ рдФрд░ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд╢рд┐рдХреАред рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ, рд╡реЗ рдПрдХ SATA рдХреЗрдмрд▓ (рдкреВрд░реНрд╡ рдореЗрдВ IDE) рд╕реЗ рдЬреБрдбрд╝рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рддрд╛рд░ рдкрд░, рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдХреЗрд╡рд▓ рдкреИрдХрдЯ рдХрдорд╛рдВрдб рдЪрд▓рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╕рд┐рджреНрдзрд╛рдВрдд рджреНрд╡рд╛рд░рд╛ рдПрдиреНрдХреЛрдб рдХрд┐рдП рдЧрдП рдХрдорд╛рдВрдб рд░рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ (рд╣рдо рдЬрд▓реНрдж рд╣реА рдкрддрд╛ рд▓рдЧрд╛ рд▓реЗрдВрдЧреЗ рдХрд┐ рдХреМрди рд╕рд╛ рд╣реИ)ред рдЗрд╕рд▓рд┐рдП, рдЕрдм рд╣рдо рддрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЙрдирдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рдЯреАрдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред рдореБрдЭреЗ рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрди рд╕рд╛рдорд╛рдиреНрдп рдХрдорд╛рдВрдб рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдкрддрд╛ рд╣реИред

  • рдПрдордПрдорд╕реАред рдЗрд╕реЗ рдПрд╕рдбреА рдХрд╛рд░реНрдб рджреНрд╡рд╛рд░рд╛ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИред рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд╕рдмрд╕реЗ рд░рд╣рд╕реНрдпрдордп рдХрдорд╛рдВрдб рд╕рд┐рд╕реНрдЯрдо рд╣реИред рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдВрдХреНрд░рдордг рд░реЗрдЦрд╛рдВрдХрди рд╡рд╛рд▓реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рдкрдврд╝реЗ рдмрд┐рдирд╛ рдбреНрд░рд╛рдЗрд╡ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХреИрд╕реЗ рдХрд░реЗрдВ - рдореИрдВ рд╣рдореЗрд╢рд╛ рднреНрд░рдорд┐рдд рд░рд╣рддрд╛ рд╣реВрдВред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдЖрдЬ рд╣рдореЗрдВ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдо рдПрд╕рдбреА рдХрд╛рд░реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, "рдмреНрд▓реИрдХ рдмреЙрдХреНрд╕" рдореЛрдб рдореЗрдВ рдПрд╕рдЯреАрдПрдо 32 рдирд┐рдпрдВрддреНрд░рдХ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
  • рдПрдЯреАрдПред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдпреЗ рдХрдорд╛рдВрдб рдЖрдИрдбреАрдИ рдмрд╕ рдореЗрдВ, рдлрд┐рд░ рдПрд╕рдПрдЯреАрдП рдкрд░ рдЪрд▓реЗред рдПрдХ рдЕрджреНрднреБрдд рдХрдорд╛рдВрдб рд╕рд┐рд╕реНрдЯрдо, рд▓реЗрдХрд┐рди рдЖрдЬ рд╣рдо рдпрд╣ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдореМрдЬреВрдж рд╣реИред
  • SCSIред рдЗрд╕ рдХрдорд╛рдВрдб рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреНрд░рд╛рдЗрд╡ рдореЗрдВ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЖрдЬ рдПрд╕рд╕реАрдПрд╕рдЖрдИ-рдЯреАрдореЗрдВ рджреМрдбрд╝рддреА рд╣реИрдВ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрд╕рдПрдПрд╕ рдмрд╕ рдХреЗ рддрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде (рд╡реИрд╕реЗ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрд╕рдПрдПрд╕ рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд╛рд▓реЗ рдПрд╕рдПрд╕рдбреА рднреА рдЕрдм рдлреИрд╢рди рдореЗрдВ рд╣реИрдВ)ред рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд, SATA рдмрд╕ рд╕реЗ рдЬреБрдбрд╝реЗ рдСрдкреНрдЯрд┐рдХрд▓ рдбреНрд░рд╛рдЗрд╡ рднреА SCSI рдХрдорд╛рдВрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред USB рдмрд╕ рдкрд░ рдЬрдм рдорд╛рд╕ рд╕реНрдЯреЛрд░реЗрдЬ рдбрд┐рд╡рд╛рдЗрд╕ рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХрдорд╛рдВрдб SCSI рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рднреА рдЬрд╛рддреЗ рд╣реИрдВред STM32 рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ USB рдмрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░реЗрдб рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдорд╛рдВрдб рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрде рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ:



рдкреАрд╕реА рд╕реЗ рдирд┐рдпрдВрддреНрд░рдХ рддрдХ, рдпреВрдПрд╕рдмреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдХрдорд╛рдВрдб рдПрд╕рд╕реАрдПрд╕рдЖрдИ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реИрдВред рдирд┐рдпрдВрддреНрд░рдХ MMC рдирд┐рдпрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрджреЗрд╢реЛрдВ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдХреЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ SDIO рдмрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдкреАрд╕реА рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЯреАрдореЗрдВ рд╣рдореЗрдВ рдПрд╕рд╕реАрдПрд╕рдЖрдИ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрддреА рд╣реИрдВред рд╡реЗ рдорд╛рд╕ рд╕реНрдЯреЛрд░реЗрдЬ рдбрд┐рд╡рд╛рдЗрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдЗрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ? рдЪрд▓реЛ рдареАрдХ рд╣реИред

SCSI рдХрдорд╛рдВрдб рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рд╡рд░рдг


рдпрджрд┐ рдЖрдк рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдВрдкрд░реНрдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ SCSI рдорд╛рдирдХ рдХрд╛ рд╡рд░реНрдгрди t10.org рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдпрдерд╛рд░реНрдерд╡рд╛рджреА рд╣реЛрдВрдЧреЗред рдХреЛрдИ рднреА рдЗрд╕реЗ рд╕реНрд╡реЗрдЪреНрдЫрд╛ рд╕реЗ рдирд╣реАрдВ рдкрдврд╝реЗрдЧрд╛ред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдЙрд╕рдХреА рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЙрдирдХреА: рдЦреБрд▓реЗ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдвреЗрд░ рдФрд░ рдмрдВрдж рд▓реЛрдЧреЛрдВ рдХрд╛ рдПрдХ рдкрд╣рд╛рдбрд╝ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдЪрд░рдо рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрдкрдХреЛ рдЬрдЯрд┐рд▓ рднрд╛рд╖рд╛ рдореЗрдВ рдЦреБрдж рдХреЛ рд╡рд┐рд╕рд░реНрдЬрд┐рдд рдХрд░ рджреЗрдЧреА рдХрд┐ рдорд╛рдирдХ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ (рдпрд╣ рд╕рдВрдпреЛрдЧрд╡рд╢, t13.org рдкрд░ рдПрдЯреАрд╡реА рдорд╛рдирдХ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ)ред рдЕрд╕рд▓реА рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдкрдврд╝рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдпрд╣ рдЕрдзрд┐рдХ рдЬреАрд╡рдВрдд рднрд╛рд╖рд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдХрд╛рд▓реНрдкрдирд┐рдХ рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рднрд╛рдЧреЛрдВ рдХреЛ рдЗрд╕рдореЗрдВ рд╕реЗ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдЦ рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╕рдордп, рдореИрдВ рд╕реАрдЧреЗрдЯ рдХреЗ рдПрд╕рд╕реАрдПрд╕рдЖрдИ рдХрдорд╛рдВрдб рд╕рдВрджрд░реНрдн рдореИрдиреБрдЕрд▓ (рдбрд╛рдпрд░реЗрдХреНрдЯ рд▓рд┐рдВрдХ www.seagate.com/files/staticfiles/support/docs/manual/Interface%20manuals29293068j.pdf рд╕реЗ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд▓реЗрдХрд┐рди рдПрдХ рдирдпрд╛ (2016) рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЖрдпрд╛ред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╡рд╣ рдХрд┐рддрдиреА рджреЗрд░ рддрдХ рдЬреАрд╡рд┐рдд рд░рд╣реЗрдЧреА)ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдХреЛрдИ рдЗрд╕ рдЖрджреЗрд╢ рдХреА рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдпрд╣ рдпрд╛рдж рд╣реИ рдХрд┐ рдПрд╕рдбреА рдкрд╛рдардХ рдЙрд╕ рд╡рд┐рд╡рд░рдг рд╕реЗ рдЖрджреЗрд╢реЛрдВ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рдЙрдкрд╕рдореБрдЪреНрдЪрдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред

рдмрд╣реБрдд рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмреЛрд▓рддреЗ рд╣реБрдП, 6 рд╕реЗ 16 рдмрд╛рдЗрдЯреНрд╕ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдПрдХ рдХрдорд╛рдВрдб рдпреВрдирд┐рдЯ рдХреЛ рдбреНрд░рд╛рдЗрд╡ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХреЛ рдкреАрд╕реА рд╕реЗ рдбреНрд░рд╛рдЗрд╡ рддрдХ рдпрд╛ рддреЛ рдбреНрд░рд╛рдЗрд╡ рд╕реЗ рдкреАрд╕реА рддрдХ рдХрдорд╛рдВрдб рдмреНрд▓реЙрдХ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (SCSI рдорд╛рдирдХ рднреА рджреНрд╡рд┐-рджрд┐рд╢рд╛рддреНрдордХ рд╡рд┐рдирд┐рдордп рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди USB рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рд╕ рд╕реНрдЯреЛрд░реЗрдЬ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдмреНрд▓реЙрдХ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рджрд┐рд╢рд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣реИ)ред рдирд┐рд░реНрджреЗрд╢ рдмреНрд▓реЙрдХ рдореЗрдВ, рдкрд╣рд▓рд╛ рдмрд╛рдЗрдЯ рд╣рдореЗрд╢рд╛ рдХрдорд╛рдВрдб рдХреЛрдб рд╣реЛрддрд╛ рд╣реИред рд╢реЗрд╖ рдмрд╛рдЗрдЯреНрд╕ рдЗрд╕рдХреЗ рддрд░реНрдХ рд╣реИрдВред рддрд░реНрдХреЛрдВ рдХреЛ рднрд░рдиреЗ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрдорд╛рдВрдб рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╡рд┐рд╡рд░рдг рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред



рдкрд╣рд▓реЗ рддреЛ рдореИрдВрдиреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рд▓реЗрдЦ рдореЗрдВ рдбрд╛рд▓реЗ, рд▓реЗрдХрд┐рди рддрдм рдореБрдЭреЗ рдорд╣рд╕реВрд╕ рд╣реБрдЖ рдХрд┐ рд╡реЗ рдкрдврд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдХрд░ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рд╕рднреА рдХреЛ рдПрдХ рд╣реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рддрд╛рд▓рд┐рдХрд╛ 97 рд╕реЗ рд╕реЗрдЧреЗрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рддрд╛рд▓рд┐рдХрд╛ 119 рд╕реЗ рдФрд░ рдЖрд░рдИрдПрдбреА (10) рдХрдорд╛рдВрдб рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рд╕реЗ READ рдХреНрд╖рдорддрд╛ (10) рдХрдорд╛рдВрдб рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ (рдКрдкрд░ рд▓рд┐рдВрдХ рджреЗрдЦреЗрдВ)ред рдХрд┐рд╕рдиреЗ рдХреЛрдИ рд╕рдВрдмрдВрдз рдирд╣реАрдВ рдкрд╛рдпрд╛ - рдЪрд┐рдВрддрд╛ рдордд рдХрд░реЛред рдпрд╣реА рддреЛ рдореИрдВ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рд╢реВрдиреНрдп рдмрд╛рдЗрдЯ рдореЗрдВ "рдХрдорд╛рдВрдб" рдлрд╝реАрд▓реНрдб рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХрдорд╛рдВрдб рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдЦреЛрд▓рдиреЗ рдФрд░ рдЙрд╕рдореЗрдВ рд╢реЗрд╖ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рддреЛ:

  • рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ 6 рд╕реЗ 16 рдмрд╛рдЗрдЯреНрд╕ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдПрдХ рдХрдорд╛рдВрдб рдмреНрд▓реЙрдХ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдХрдорд╛рдВрдб рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЗрд╕рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рд╕рдЯреАрдХ рд╕рдВрдЦреНрдпрд╛ рдЗрдВрдЧрд┐рдд рдХреА рдЧрдИ рд╣реИ)ред
  • рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмреНрд▓реЙрдХ рдХрд╛ рд╢реВрдиреНрдп рдмрд╛рдЗрдЯ рд╣реИ: рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ рдХрдорд╛рдВрдб рдХреЛрдб рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред
  • рд╢реЗрд╖ рдмреНрд▓реЙрдХ рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рдЙрджреНрджреЗрд╢реНрдп рдирд╣реАрдВ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рднрд░рдирд╛ рд╣реИ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреАрдо рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред
  • рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдмреНрд▓реЙрдХ рдЬрд┐рд╕реЗ рдПрдХ рдбреНрд░рд╛рдЗрд╡ рд╕реЗ рдпрд╛ рдЙрд╕рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрд╕реЗ рдПрдХ рдХрдорд╛рдВрдб рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рджрд░рдЕрд╕рд▓, рдмрд╕ рдЗрддрдирд╛ рд╣реАред рд╣рдордиреЗ SCSI рдХрдорд╛рдВрдб рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рдирд┐рдпрдо рд╕реАрдЦреЗред рдЕрдм рд╣рдо рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрди рдкрд░ рдкреНрд░рд▓реЗрдЦрди рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕реНрддрд░ рдкрд░ рдХреИрд╕реЗ рдХрд░реЗрдВ?

рд▓рд┐рдирдХреНрд╕ SCSI рдХрдорд╛рдВрдб


рд▓рдХреНрд╖реНрдп рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдЦреЛрдЬ рдХрд░реЗрдВ


рдЖрджреЗрд╢ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбрд┐рд╕реНрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдЦреЛрд▓реЗрдВред рдЖрдЗрдП рдЙрд╕рдХрд╛ рдирд╛рдо рдЦреЛрдЬреЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдзрд╛рд░рд╛рд╡рд╛рд╣рд┐рдХ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рдЬрд╛рдПрдВрдЧреЗред рдЖрдЗрдП / рджреЗрд╡ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ "рдлрд╛рдЗрд▓реЛрдВ" рдХреА рд╕реВрдЪреА рджреЗрдЦреЗрдВ (рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд▓рд┐рдирдХреНрд╕ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рднреА рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЙрдирдХреА рд╕реВрдЪреА рдЙрд╕реА рдПрд▓рдПрд╕ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЧрдИ рд╣реИ)ред

рдЖрдЬ рд╣рдо рдЖрднрд╛рд╕реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдбрд┐рд╕реНрдХ рдкрд░ рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВ:



рд╣рдо рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ:



рдиреЗрд╕реНрдЯреЗрдб рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХрд╛ рдПрдХ рдкрд░рд┐рдЪрд┐рдд рд╕реЗрдЯ! рд╣рдо ls рдХрдорд╛рдВрдб рдХреЗ тАУl рд╕реНрд╡рд┐рдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ , рдЬреЛ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯреНрд╕ рд╕реЗ рдЬрд╛рдирддреЗ рдереЗ , рдмрд╛рдИ -рдЖрдИрдбреА рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:



рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдП рдЧрдП рд╢рдмреНрдж рдЕрдкрдиреЗ рд▓рд┐рдП рдмреЛрд▓рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдбреНрд░рд╛рдЗрд╡ рд╣реИ рдЬрд┐рд╕рдореЗрдВ Redd рдкрд░рд┐рд╕рд░ рдХрд╛ рдЖрдВрддрд░рд┐рдХ рдПрд╕рдбреА рдХрд╛рд░реНрдб рд╣реИред рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛! рдЕрдм рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ MIR_Redd_Internal_SD рдбрд┐рд╡рд╛рдЗрд╕ / dev / sdb рдФрд░ / dev / sdb1 рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рд╡рд╣ рдЬреЛ рдмрд┐рдирд╛ рдирдВрдмрд░ рдХреА рдбреНрд░рд╛рдЗрд╡ рд╣реИ, рд╣рдо рдЙрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рд╡рд╣ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╣реИ рдЬреЛ рдЙрд╕ рдкрд░ рдбрд╛рд▓реА рдЧрдИ рдореАрдбрд┐рдпрд╛ рдкрд░ рд╕реНрдерд┐рдд рд╣реИред рдПрд╕рдбреА рдХрд╛рд░реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, / dev / sdb рд░реАрдбрд░ рд╣реИ, рдФрд░ / dev / sdb1 рдХрд╛рд░реНрдб рдореЗрдВ рдбрд╛рд▓реА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рд╣реИред

рдЖрджреЗрд╢ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдХрд╛рд░реНрдп


рдЖрдорддреМрд░ рдкрд░, рдХрд┐рд╕реА рднреА рдУрдПрд╕ рдореЗрдВ, рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рднреА рдЧреИрд░-рдорд╛рдирдХ рдЪреАрдЬреЗрдВ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд╕реАрдзреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИрдВред рд▓рд┐рдирдХреНрд╕ рдкрд░, рдРрд╕реЗ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП ioctl () рдлрд╝рдВрдХреНрд╢рди рдЙрдкрд▓рдмреНрдз рд╣реИред рд╣рдорд╛рд░рд╛ рдорд╛рдорд▓рд╛ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИред рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо sg.h рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд SG_IO рдЕрдиреБрд░реЛрдз рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдЕрдиреБрд░реЛрдз рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд╛рд▓реЗ sg_io_hdr_t рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рднреА рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рдкреВрд░реА рд╕рдВрд░рдЪрдирд╛ рдирд╣реАрдВ рджреВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рднрд░рдирд╛ рдирд╣реАрдВ рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдЙрдирдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рджреЗ рджреВрдВрдЧрд╛:

typedef struct sg_io_hdr { int interface_id; /* [i] 'S' for SCSI generic (required) */ int dxfer_direction; /* [i] data transfer direction */ unsigned char cmd_len; /* [i] SCSI command length ( <= 16 bytes) */ unsigned char mx_sb_len; /* [i] max length to write to sbp */ unsigned short int iovec_count; /* [i] 0 implies no scatter gather */ unsigned int dxfer_len; /* [i] byte count of data transfer */ void * dxferp; /* [i], [*io] points to data transfer memory or scatter gather list */ unsigned char * cmdp; /* [i], [*i] points to command to perform */ unsigned char * sbp; /* [i], [*o] points to sense_buffer memory */ unsigned int timeout; /* [i] MAX_UINT->no timeout (unit: millisec) */ 

рдпрд╣ рдЙрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИрдВ ( interface_id, dxfer_direction, рдЯрд╛рдЗрдордЖрдЙрдЯ )ред рд▓реЗрдЦ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдврд╝ рд░рд╣рд╛ рд╣реИред

Cmd_len рдлрд╝реАрд▓реНрдб рдореЗрдВ рдХрдорд╛рдВрдб рдмреНрд▓реЙрдХ рдореЗрдВ рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ cmdp рдореЗрдВ рдЗрд╕ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд╣реЛрддрд╛ рд╣реИред рдЖрдк рдПрдХ рдЖрджреЗрд╢ рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдЗрд╕рд▓рд┐рдП рдмрд╛рдЗрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЧреИрд░-рд╢реВрдиреНрдп (6 рд╕реЗ 16 рддрдХ) рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдбреЗрдЯрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред рдпрджрд┐ рд╡реЗ рд╣реИрдВ, рддреЛ рдЪрдпрдирд┐рдд рдмрдлрд╝рд░ рдХреА рд▓рдВрдмрд╛рдИ dxfer_len рдлрд╝реАрд▓реНрдб рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ dxferp рдлрд╝реАрд▓реНрдб рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИред рдПрдХ рдбреНрд░рд╛рдЗрд╡ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдмрдлрд░ рдЖрдХрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдбреЗрдЯрд╛ рдХреЛ рднреМрддрд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреА рджрд┐рд╢рд╛ dxfer_direction рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИред рдорд╛рдиреНрдп USB рдорд╛рд╕ рд╕рдВрдЧреНрд░рд╣рдг рдбрд┐рд╡рд╛рдЗрд╕ рдорд╛рди рд╣реИрдВ: SG_DXFER_NONE, SG_DXFER_TO_DEV, SG_DXFER_FROM_DEV ред рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдФрд░ рдЪреАрдЬ рд╣реИ, рд▓реЗрдХрд┐рди рдорд╛рд╕ рд╕реНрдЯреЛрд░реЗрдЬ рдбрд┐рд╡рд╛рдЗрд╕ рдорд╛рдирдХ рдЗрд╕реЗ рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред

рдЖрдк рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рддреНрд░реБрдЯрд┐ рдХреЛрдб ( SENSE ) рдХреА рд╡рд╛рдкрд╕реА рдХрд╛ рднреА рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕реАрдЧреЗрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдХреНрдпрд╛ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЦрдВрдб 2.4ред рдЖрд╡рдВрдЯрд┐рдд рдмрдлрд╝рд░ рдХреА рд▓рдВрдмрд╛рдИ mx_sb_len рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХреА рдЧрдИ рд╣реИ, рдФрд░ рдмрдлрд╝рд░ рдХреЛ рд╕реВрдЪрдХ sbp рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдКрдкрд░ рдЬреЛ рдХреБрдЫ рднреА рдмрд╛рдд рдХреА рдереА рд╡рд╣ рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рднрд░реА рд╣реБрдИ рд╣реИ (рдкреНрд▓рд╕ рдЖрдк рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред SG_IO рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдкрдврд╝реЗрдВ: sg.danny.cz/sg/sg_io.html

рд╣рдо рдбреНрд░рд╛рдЗрд╡ рдкрд░ рдПрдХ рдорд╛рдирдХ рдХрдорд╛рдВрдб рднреЗрдЬрддреЗ рд╣реИрдВ


рдареАрдХ рд╣реИ, рд╣рдордиреЗ рдХрдорд╛рдВрдб рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛, рд╣рдордиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрд┐рд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдЗрд╕реЗ рднреЗрдЬрдирд╛ рд╣реИ, рд╣рдордиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдХрд┐ рдХрд┐рд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИред рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдХреБрдЫ рдорд╛рдирдХ рдХрдорд╛рдВрдб рднреЗрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдбреНрд░рд╛рдЗрд╡ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрдЬреНрдЮрд╛ рджреЗрдВред рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕рд┐рдЧреЗрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ:



рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрд╕рд╕реАрдПрд╕рдЖрдИ-рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдорд╛рдирдХ рдХрдорд╛рдВрдб рдХреЗ рд╕рднреА рдХреНрд╖реЗрддреНрд░ рдмрд┐рдЧ рдПрдВрдбрд┐рдпрди рдиреЛрдЯреЗрд╢рди рдореЗрдВ рднрд░реЗ рд╣реБрдП рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН, рд╕рдмрд╕реЗ рдЖрдЧреЗ рдмрд╛рдЗрдЯред рдЗрд╕рд▓рд┐рдП, рд╣рдо "0x80, 0x00" рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдмрдлрд░ рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдХреНрд╖реЗрддреНрд░ рдХреЛ рднрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд - "0x00, 0x80"ред рд▓реЗрдХрд┐рди рдпрд╣ рдорд╛рдирдХ рдЖрджреЗрд╢реЛрдВ рдореЗрдВ рд╣реИред рдЧреИрд░-рдорд╛рдирдХ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕рдВрднрд╡ рд╣реИ, рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рд╡рд┐рд╡рд░рдг рд╕реЗ рдкрд░рд╛рдорд░реНрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рджрд░рдЕрд╕рд▓, рдХреЗрд╡рд▓ рдХрдорд╛рдВрдб рдХреЛрдб ( 12h ) рдФрд░ рд▓рдВрдмрд╛рдИ рд╣рдореЗрдВ рднрд░рдирд╛ рд╣реИред рд╣рдо рдПрдХ рдкреГрд╖реНрда рд╢реВрдиреНрдп рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВрдЧреЗ, рдФрд░ рд╢реЗрд╖ рдХреНрд╖реЗрддреНрд░ рдпрд╛ рддреЛ рдЖрд░рдХреНрд╖рд┐рдд рд╣реИрдВ, рдпрд╛ рдкреБрд░рд╛рдиреЗ рд╣реИрдВ, рдпрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╢реВрдиреНрдп рд╣реИрдВред рддреЛ рдЙрди рд╕рднреА рдХреЛ рд╢реВрдиреНрдп рд╕реЗ рднрд░реЗрдВред

рд╣рдо рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдпрд╣ рдХрдорд╛рдВрдб рджреЗрддрд╛ рд╣реИ:
 #include <cstdio> #include <stdint.h> #include <string.h> #include <fcntl.h> // open #include <unistd.h> // close #include <sys/ioctl.h> #include <scsi/scsi.h> #include <scsi/sg.h> int main() { printf("hello from SdAccessTest!\n"); int s_fd = open("/dev/sdb", O_NONBLOCK | O_RDWR); if (s_fd < 0) { printf("Cannot open file\n"); return -1; } sg_io_hdr_t header; memset(&header;, 0, sizeof(header)); uint8_t cmd12h[] = { 0x12,0x00,0x00,0x00,0x80,0x00}; uint8_t data[0x80]; uint8_t sense[0x80]; header.interface_id = 'S'; //  'S' //  header.cmd_len = sizeof(cmd12h); header.cmdp = cmd12h; //  header.dxfer_len = sizeof(data); header.dxferp = data; header.dxfer_direction = SG_DXFER_TO_FROM_DEV; //     header.mx_sb_len = sizeof(sense); header.sbp = sense; // header.timeout = 100; // 100  int res = ioctl(s_fd, SG_IO, &header;); close(s_fd); return 0; } 



рд░рд┐рдореЛрдЯ рд░реЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреИрд╕реЗ рдЪрд▓рд╛рдПрдВ, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ ред рд╕рдЪ рд╣реИ, рдЗрд╕реЗ рдкрд╣рд▓реА рдмрд╛рд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реБрдП, рдореБрдЭреЗ рддреБрд░рдВрдд рдЦреБрд▓реЗ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реАред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдбрд┐рд╕реНрдХ рдбрд┐рд╡рд╛рдЗрд╕ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЕрдзрд┐рдХрд╛рд░ рдирд╣реАрдВ рд╣реИрдВред рдореИрдВ рдХреМрди рд╕рд╛ рд▓рд┐рдирдХреНрд╕ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣реВрдВ, рдореИрдВрдиреЗ рдХрдИ рдмрд╛рд░ рд▓рд┐рдЦрд╛, рд▓реЗрдХрд┐рди рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЗрд╕ рдкрд░реЗрд╢рд╛рдиреА рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрдорд╛рдВрдб рдЬрд╛рд░реА рдХрд░рдХреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:

рд╕реБрдбреЛ рдЪрд╛рдореЛрдж 666 / рджреЗрд╡ / рдПрд╕рдбреАрдмреА

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЗрд░реЗ рдорд╛рд▓рд┐рдХ (рдФрд░ рд╡рд╣ рдЗрд╕ рдУрдПрд╕ рдореЗрдВ рдПрдХ рдорд╣рд╛рди рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣реИрдВ) рдиреЗ рдмрд╛рдж рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдХрд┐ рд╕рдорд╛рдзрд╛рди рддрдм рддрдХ рдорд╛рдиреНрдп рд╣реИ рдЬрдм рддрдХ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд░рд┐рдмреВрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдбрд┐рд╕реНрдХ рд╕рдореВрд╣ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред

рдЗрди рджреЛ рд░рд╛рд╕реНрддреЛрдВ рдореЗрдВ рд╕реЗ рдЬреЛ рднреА рд╣рдо рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд▓рд╛рдЗрди рдХреЗ рдкрд╛рд╕ рдПрдХ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд▓рдЧрд╛рддреЗ рд╣реИрдВ (s_fd); рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рддрдХ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВ (рдХреНрдпреЛрдВрдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдПрдХ рджрд┐рди рднреА рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдордп рдмрд┐рддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд╣реАрдВ рд╣реИ рдФрд░ рдореИрдкрд░ рдбрд╛рд▓рдиреЗ рдкрд░ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рд╣реИ рдпрджрд┐ рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рд╣рдореЗрдВ рд╕рдм рдХреБрдЫ рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рд░реЗрд╕ рдХрд╛ рдорд╛рди рд╢реВрдиреНрдп рд╣реИред рдЗрд╕рд▓рд┐рдП рдЯреАрдо рдиреЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред



рдмрдлрд░ рдореЗрдВ рдХреНрдпрд╛ рдЖрдпрд╛? рдЬрдм рдореИрдВрдиреЗ рдбрдВрдк рдХреЗ рд▓рд┐рдП рдкрддреЗ рдореЗрдВ рд╢рдмреНрдж рдбреЗрдЯрд╛ рджрд░реНрдЬ рдХрд┐рдпрд╛, рддреЛ рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рдмрддрд╛рдпрд╛ рдХрд┐ рд╡реЗ рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдореБрдЭреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдбреЗрдЯрд╛; ред рдпрд╣ рдЕрдЬреАрдм рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд╣реИ, рдЬрдм рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рддрд╣рдд рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕рд┐рд░реНрдл рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдЗрд╕ рддрд░рд╣ рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдо рдХреЛ рджреЗрдЦреЗрдВ:



рдпрд╣ рд╕рд╣реА рд╣реИ, рдЙрдиреНрд╣реЛрдВрдиреЗ рд╣рдореЗрдВ рдбреНрд░рд╛рдЗрд╡ рдХрд╛ рдирд╛рдо рдФрд░ рд╕рдВрд╢реЛрдзрди рд▓реМрдЯрд╛ рджрд┐рдпрд╛ред рдкрд░рд┐рдгрд╛рдореА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рд╕реАрдЧреЗрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ (рдзрд╛рд░рд╛ 3.6.2, рддрд╛рд▓рд┐рдХрд╛ 59) рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред рднрд╛рд╡рдирд╛ рдмрдлрд╝рд░ рдирд╣реАрдВ рднрд░рд╛, рд▓реЗрдХрд┐рди рдЕрдиреБрд░реЛрдз рдХреЗ IOCTL рд╡рд┐рд╡рд░рдг рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рднрд░рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ рдЬреЛ рдЗрд╕ рдмрдлрд╝рд░ рдореЗрдВ рдХреБрдЫ рджреЗрддрд╛ рд╣реИред рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ: Sense рдбреЗрдЯрд╛ (рдХреЗрд╡рд▓ 'рд╕реНрдЯреЗрдЯрд╕' рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм CHECK CONDITION рдпрд╛ (driver_status & DRIVER_SENSE) рд╕рддреНрдп рд╣реИ) ред

Redd рдЖрдВрддрд░рд┐рдХ рдПрд╕рдбреА рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдХрдорд╛рдВрдб рдкреНрд░рд╛рд░реВрдк


рдЕрдм рдЬрдм рд╣рдордиреЗ рди рдХреЗрд╡рд▓ рдорд╛рдирдХ рдХреЗ рд╢реБрд╖реНрдХ рд╡рд┐рд╡рд░рдг рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рд╕рдм рдХреБрдЫ рднреА рдЖрдЬрдорд╛рдпрд╛ рд╣реИ, рддреЛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдХрдорд╛рдВрдб рдмреНрд▓реЙрдХ рдХреНрдпрд╛ рд╣реИ, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдорд╛рдВрдб рдкреНрд░рд╛рд░реВрдк рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдЧреИрд░-рдорд╛рдирдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдЬрдЯрд┐рд▓ рдмреЛрд░реНрдб рдкрд░ STM32 рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд▓рд┐рдП "рдлреНрд▓реИрд╢" рд╣реИрдВред рдореИрдВрдиреЗ рдХрдорд╛рдВрдб рдХреЛрдб рдХреА рд╢реБрд░реБрдЖрдд рд╡реЗрдВрдбрд░ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХ рд░реЗрдВрдЬ рдСрдл рдХрдорд╛рдВрдбреНрд╕ рд╕реЗ рдХреАред рдпрд╣ 0xC0 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ, SCSI рдХрдорд╛рдВрдб рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ, C0h рд▓рд┐рдЦреЗрдВред рдХрдорд╛рдВрдб рдХреА рд▓рдВрдмрд╛рдИ рд╣рдореЗрд╢рд╛ 10 рдмрд╛рдЗрдЯреНрд╕ рд╣реЛрддреА рд╣реИред рдЯреАрдо рдХрд╛ рдкреНрд░рд╛рд░реВрдк рдПрдХреАрдХреГрдд рд╣реИ рдФрд░ рдиреАрдЪреЗ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдмрд╛рдЗрдЯрдирд┐рдпреБрдХреНрддрд┐
0рдХрдорд╛рдВрдб рдХреЛрдб C0h
1рдЙрдкрдХрдорд╛рдВрдб рдХреЛрдб
2рддрд░реНрдХ arg1ред рд▓рд┐рдЯрд┐рд▓ рдПрдВрдбрд┐рдпрди рдиреЛрдЯреЗрд╢рди рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВ (рдХрдо рдмрд╛рдЗрдЯ рдЖрдЧреЗ)
3
4
5
6рддрд░реНрдХ реиред рд▓рд┐рдЯрд┐рд▓ рдПрдВрдбрд┐рдпрди рдиреЛрдЯреЗрд╢рди рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВ (рдХрдо рдмрд╛рдЗрдЯ рдЖрдЧреЗ)
7
8
9

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓рд┐рдЯрд┐рд▓ рдПрдВрдбрд┐рдпрди рдиреЛрдЯреЗрд╢рди рдореЗрдВ рддрд░реНрдХ рджрд┐рдП рдЧрдП рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рдмрд╛рдЗрдЯ рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓рд┐рдП рдмрд┐рдирд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдорд╛рдВрдб рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдФрд░ рд╕реАрдзреЗ рдЙрд╕рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рд╕рдВрд░реЗрдЦрдг рд╕рдорд╕реНрдпрд╛рдПрдБ (рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рджреЛ рд╢рдмреНрджреЛрдВ рдХреЗ рдРрд╕реЗ рдСрдлрд╝рд╕реЗрдЯ рд╣реИрдВ рдЬреЛ x86 рдФрд░ x64 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдЪрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИрдВ) рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИрдВред

Subcommand рдХреЛрдб рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧрдгрдирд╛ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╣реИрдВ:
 enum vendorSubCommands { subCmdSdEnable = 0, // 00 Switch SD card to PC or Outside subCmdSdPower, // 01 Switch Power of SD card On/Off subCmdSdReinit, // 02 Reinitialize SD card (for example, after Power Cycle) subCmdSpiFlashEnable, // 03 Switch SPI Flash to PC or Outside subCmdSpiFlashWritePage, // 04 Write Page to SPI Flash subCmdSpiFlashReadPage, // 05 Read Page from SPI Flash subCmdSpiFlashErasePage,// 06 Erase Pages on SPI Flash (4K block) subCmdRelaysOn, // 07 Switch relays On by mask subCmdRelaysOff, // 08 Switch relays off by mask subCmdRelaysSet, // 09 Set state of all relays by data subCmdFT4222_1_Reset, // 0A Activate Reset State or switch chip to normal mode subCmdFT4222_2_Reset, // 0B Activate Reset State or switch chip to normal mode subCmdFT4222_3_Reset, // 0C Activate Reset State or switch chip to normal mode subCmdFT4232_Reset, // 0D Activate Reset State or switch chip to normal mode subCmdFT2232_Reset, // 0E Activate Reset State or switch chip to normal mode subCmdMAX3421_Reset, // 0F Activate Reset State or switch chip to normal mode subCmdFT4222_1_Cfg, // 10 Write to CFG pins of FT4222_1 subCmdFT4222_2_Cfg, // 11 Write to CFG pins of FT4222_2 subCmdFT4222_3_Cfg, // 12 Write to CFG pins of FT4222_3 }; 

рдЙрдиреНрд╣реЗрдВ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдЖрдВрддрд░рд┐рдХ рдФрд░ рдмрд╛рд╣рд░реА рдореЛрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛


SubCmdSdEnable рдФрд░ subCmdSpiFlashEnable рдХрдорд╛рдВрдб рдХреНрд░рдорд╢рдГ SD рдХрд╛рд░реНрдб рдФрд░ SPI рдлреНрд▓реИрд╢ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВред рдкреИрд░рд╛рдореАрдЯрд░ arg1 рдирд┐рдореНрди рдорд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЧреБрдЬрд░рддрд╛ рд╣реИ:

 enum enableMode { enableModeToPC = 0, enableModeOutside }; 

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рджреЛрдиреЛрдВ рдбрд┐рд╡рд╛рдЗрд╕ рдПрдХ рдкреАрд╕реА рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВред

рдмрд┐рдЬрд▓реА рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ


рдПрд╕рдбреАрдЖрдИрдУ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдХрд╛рдлреА рд╣реЗрд░рдлреЗрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХрднреА-рдХрднреА рдПрд╕рдбреА рдХрд╛рд░реНрдб рдХреЛ рдЗрд╕рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░реАрд╕реЗрдЯ рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЗрд╕рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдмрд╛рд╣рд░реА рдХрдиреЗрдХреНрдЯрд░ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛)ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрдВрдж рдХрд░реЗрдВ, рдлрд┐рд░ рдЗрд╕рдХреА рд╢рдХреНрддрд┐ рдЪрд╛рд▓реВ рдХрд░реЗрдВред рдпрд╣ subCmdSdPower рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддрд░реНрдХ arg1 рдореЗрдВ, рдирд┐рдореНрди рдореЗрдВ рд╕реЗ рдПрдХ рдорд╛рди рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: 0 - рдкрд╛рд╡рд░ рдСрдл, 1 - рдкрд╛рд╡рд░ рдСрдиред рдкрд╛рд╡рд░ рд▓рд╛рдЗрди рдкрд░ рдХреИрдкреЗрд╕рд┐рдЯрд░ рдХреЗ рдирд┐рд░реНрд╡рд╣рди рдХреЗ рд▓рд┐рдП рд╕рдордп рджреЗрдирд╛ рдпрд╛рдж рд░рдЦреЗрдВред

рд╢рдХреНрддрд┐ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХрд╛рд░реНрдб, рдпрджрд┐ рдпрд╣ рдкреАрд╕реА рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рддреЛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, subCmdSdReinit рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдЗрд╕рдореЗрдВ рдХреЛрдИ рддрд░реНрдХ рдирд╣реАрдВ рд╣реИ)ред

SPI рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ


рдпрджрд┐ рдПрд╕рдбреА рдХрд╛рд░реНрдб рдПрдХ рдкреВрд░реНрдг рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ, рддреЛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдЪрд┐рдк рдХрд╛рдлреА рд╕реАрдорд┐рдд рд╣реИред рдЖрдк рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреГрд╖реНрдареЛрдВ (256 рдмрд╛рдЗрдЯреНрд╕) рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рд╣реА рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред Microcircuit рдореЗрдВ рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдЗрддрдиреА рд╣реИ рдХрд┐ рдкреЗрдЬ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рднреА, рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рдирд╣реАрдВ рд▓рдЧреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ "рдлрд░реНрдорд╡реЗрдпрд░" рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред

SubCmdSpiFlashReadPage рдХрдорд╛рдВрдб рдкреЗрдЬ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИред рдкрддрд╛ arg1 рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ, arg2 рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрдареЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдкреГрд╖реНрдареЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдПрдХ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдХрдорд╛рдВрдб 256 рдмрд╛рдЗрдЯ рдбреЗрдЯрд╛ рд▓реМрдЯрд╛рдПрдЧрд╛ред

рдЙрд╕рдХреЗ рд▓рд┐рдП рдирдЬрд░ рдЖрддрд╛ рд╣реИ subCmdSpiFlashWritePage рдХрдорд╛рдВрдбред рдЙрд╕рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдЙрд╕реА рд╕рд┐рджреНрдзрд╛рдВрдд рд╕реЗ рднрд░реЗ рдкрдбрд╝реЗ рд╣реИрдВред рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреА рджрд┐рд╢рд╛ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рд╣реИред

рдлреНрд▓реИрд╢ рдореЗрдореЛрд░реА рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдпрд╣ рд╣реИ рдХрд┐ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдХреЗрд╡рд▓ рдПрдХрд▓ рдмрд┐рдЯреНрд╕ рдХреЛ рд╢реВрдиреНрдп рдмрд┐рдЯреНрд╕ рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╣реА рдореВрд▓реНрдп рдкрд░ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреГрд╖реНрдареЛрдВ рдХреЛ рдорд┐рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рд▓рд┐рдП subCmdSpiFlashErasePage рдХрдорд╛рдВрдб рд╣реИред рд╕рд╣реА рд╣реИ, рд▓рд╛рдЧреВ рдорд╛рдЗрдХреНрд░реЛрдХреНрд░рд┐рд╕рд┐рдЯ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг, рдпрд╣ рдПрдХрд▓ рдкреГрд╖реНрда рдХреЛ рдорд┐рдЯрд╛рддрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдкрддрд╛ arg1 рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдПрдХ 4-рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рдмреНрд▓реЙрдХ рд╣реИред

рдареЛрд╕ рд░рд╛рдЬреНрдп рд░рд┐рд▓реЗ рдкреНрд░рдмрдВрдзрди


рдкрд░рд┐рд╕рд░ рдореЗрдВ рдЫрд╣ рдареЛрд╕ рд░рд╛рдЬреНрдп рд░рд┐рд▓реЗ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрди рдЯреАрдореЗрдВ рд╣реИрдВред

subCmdRelaysSet - рдПрдХ рд╕рд╛рде рд╕рднреА рдЫрд╣ рд░рд┐рд▓реЗ рдХрд╛ рдорд╛рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдкреИрд░рд╛рдореАрдЯрд░ arg1 рдореЗрдВ, рдПрдХ рдорд╛рди рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдЯ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд░рд┐рд▓реЗ (рд╢реВрдиреНрдп рдмрд┐рдЯ - рдЗрдВрдбреЗрдХреНрд╕ 0 рдХреЗ рд╕рд╛рде рд░рд┐рд▓реЗ, рдЗрдВрдбреЗрдХреНрд╕ 1 рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рдмрд┐рдЯ, рдЖрджрд┐) рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдПрдХ рдПрдХрд▓ рдмрд┐рдЯ рдорд╛рди рд░рд┐рд▓реЗ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ, рдПрдХ рд╢реВрдиреНрдп рдорд╛рди рдЗрд╕реЗ рдЦреЛрд▓рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред

рдСрдкрд░реЗрд╢рди рдХрд╛ рдпрд╣ рддрд░реАрдХрд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬрдм рд╕рднреА рд░рд┐рд▓реЗ рдПрдХрд▓ рд╕рдореВрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рд╡реЗ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдЖрдкрдХреЛ рдПрдХ рдмрдлрд░ рдЪрд░ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рд╕рднреА рд░рд┐рд▓реЗ рдХреЗ рд░рд╛рдЬреНрдп рдореВрд▓реНрдп рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд┐рд▓реЗ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреБрд▓ рдореВрд▓реНрдп рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдЕрддреНрдпрдВрдд рддреАрд╡реНрд░ рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдк рджреЛ рдЕрдиреНрдп рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

subCmdRelaysOn - рдорд╛рд╕реНрдХ рджреНрд╡рд╛рд░рд╛ рдЪрдпрдирд┐рдд рд░рд┐рд▓реЗ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред рдЬреЛ рд▓реЛрдЧ arg1 рддрд░реНрдХ рдореЗрдВ рдЗрдХрд╛рдИ рдмрд┐рдЯреНрд╕ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВ, рд╡реЗ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред рдорд╛рд╕реНрдХ рдореЗрдВ рд╢реВрдиреНрдп рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд░рд┐рд▓реЗ рдЙрдирдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдирд╛рдП рд░рдЦреЗрдВрдЧреАред

SubCmdRelaysOff рдХрдорд╛рдВрдб рдорд┐рд░рд░рд┐рдВрдЧ рдХрд░рдХреЗ рдпрд╣ рдорд╛рд╕реНрдХ рджреНрд╡рд╛рд░рд╛ рдЪрдпрдирд┐рдд рд░рд┐рд▓реЗ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрдЧрд╛ред рд╡реЗ рддрд░реНрдХ рдЬреЛ рддрд░реНрдХ arg1 рдореЗрдВ рдПрдХрд▓ рдмрд┐рдЯреНрд╕ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдорд╛рд╕реНрдХ рдореЗрдВ рд╢реВрдиреНрдп рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд░рд┐рд▓реЗ рдЙрдирдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдирд╛рдП рд░рдЦреЗрдВрдЧреАред

рдПрдлрдЯреАрдбреАрдЖрдИ рдФрд░ рдореИрдХреНрд╕рд┐рдо рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░реЗрдВ


FTDI рдФрд░ Maxim microcircuits рдХреЛ рд░реАрд╕реЗрдЯ рд╕рд┐рдЧреНрдирд▓ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрджреЗрд╢реЛрдВ рдХрд╛ рд╕рдореВрд╣ subCmdFT4222_1_Reset , subCmdFT4222_2_Reset , subCmdFT4222_3_et , subCmdFT4232_Reset , subCmdFT2232_Reset рдФрд░ subCmdddd4/ рдЙрдирдХреЗ рдирд╛рдореЛрдВ рд╕реЗ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХреМрди рд╕реЗ рдЪрд┐рдкреНрд╕ рдХреЛ рд░реАрд╕реЗрдЯ рд╕рд┐рдЧреНрдирд▓ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред FT4222 рдкреБрд▓, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдорд╛рдирд╛, рд╕рд░реНрдХрд┐рдЯ рдореЗрдВ рджреЛ рд╣реИрдВ (рдЙрдирдХреЗ рд╕реВрдЪрдХрд╛рдВрдХ 1 рдФрд░ 2 рд╣реИрдВ), рдПрдХ рдФрд░ FT4222 рдкреБрд▓ рдбреЗрдЯрд╛ рдХреЛ MAX3421 рдЪрд┐рдк рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред

рдкреИрд░рд╛рдореАрдЯрд░ arg1 рдирд┐рдореНрди рдорд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЧреБрдЬрд░рддрд╛ рд╣реИ:

 enum ResetState { resetStateActive =0, resetStateNormalOperation }; 

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕рднреА рдкреБрд▓ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдЦреБрдж рдЗрд╕ рдмрд╛рдд рдХреЛ рд▓реЗрдХрд░ рдЖрд╢реНрд╡рд╕реНрдд рдирд╣реАрдВ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдбрд┐рд╡рд╛рдЗрд╕ рддрдХ рдХреЛрдИ рд╕реАрдзреА рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рд╕рдм рдХреБрдЫ рдФрд░ рд╕рдм рдХреБрдЫ рджреВрд░ рд╕реЗ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

FT4222 рдЪрд┐рдкреНрд╕ рдХреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛


FT4222 рдЪрд┐рдкреНрд╕ рдореЗрдВ рдЪрд╛рд░ рдореЛрдб рд╣реИрдВред рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ "00" рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдореЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдЪрд╛рдирдХ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдкрд╣рд▓реЗ, рджреВрд╕рд░реЗ рдФрд░ рддреАрд╕рд░реЗ рдЪрд┐рдкреНрд╕ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП subCmdFT4222_1_Cfg , subCmdFT4222_2_Cfg, рдФрд░ submmFTFT4222_3_Cfg рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдореВрд▓реНрдп CFG0 рдФрд░ CFG1 рдХреЛ arg1 рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдирд┐рдЪрд▓реЗ рджреЛ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

STM32 рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдЖрджреЗрд╢ рдЬрд╛рд░реА рдХрд░рдиреЗ рдореЗрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрднрд╡


рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрд╕рдбреА рдХрд╛рд░реНрдб рдХреЛ рдмрд╛рд╣рд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЛрдб 0x00 рдХреЗ рд╕рд╛рде subCmdSdEnable рдХрдорд╛рдВрдб рдХреЛ рддрд░реНрдХ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ рдХреЛрдб 0x01 рдХреЗ рд╕рд╛рде рд╕рдХреНрд╖рдо рдХрд░реЗрдВред рдареАрдХред рд╣рдо рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╡ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВред

рд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо:
 #include <cstdio> #include <stdint.h> #include <string.h> #include <fcntl.h> // open #include <unistd.h> // close #include <sys/ioctl.h> #include <scsi/scsi.h> #include <scsi/sg.h> int main() { printf("hello from SdAccessTest!\n"); int s_fd = open("/dev/sdb", O_NONBLOCK | O_RDWR); if (s_fd < 0) { printf("Cannot open file\n"); return -1; } sg_io_hdr_t header; memset(&header;, 0, sizeof(header)); uint8_t cmdSdToOutside[] = { 0xC0,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; uint8_t cmdSdToPC[] = { 0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; uint8_t sense[32]; memset(sense, 0, sizeof(sense)); header.interface_id = 'S'; //  'S' //  header.cmd_len = sizeof(cmdSdToOutside); header.cmdp = cmdSdToOutside; //  ( ) header.dxfer_len = 0; header.dxferp = 0; header.dxfer_direction = SG_DXFER_NONE; //     header.mx_sb_len = sizeof(sense); header.sbp = sense; // header.timeout = 100; // 100  int res = ioctl(s_fd, SG_IO, &header;); //   header.cmdp = cmdSdToPC; res = ioctl(s_fd, SG_IO, &header;); close(s_fd); return 0; } 


рд╣рдордиреЗ рдХрдорд╛рдВрдб рдХреА рд▓рдВрдмрд╛рдИ рдХреЛ рджрд╕ рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдФрд░ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ред рдЦреИрд░, рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрдорд╛рдВрдб рдХреЛрдб рдХреЛ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрд╛, рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ред рдЕрдиреНрдпрдерд╛, рд╕рдм рдХреБрдЫ рд╡рд╣реА рд░рд╣рддрд╛ рд╣реИред рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ ... рдФрд░ ... рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред Ioctl () рдлрд╝рдВрдХреНрд╢рди рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИред рдХрд╛рд░рдг SG_IO рдХрдорд╛рдВрдб рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рд╡рд┐рдХреНрд░реЗрддрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдорд╛рдВрдб C0h рджреЗрддреЗ рд╣реИрдВ , рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:
рдХрд┐рд╕реА рднреА рдЕрдиреНрдп SCSI рдХрдорд╛рдВрдб (opcode) sg рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд▓рд┐рдП рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ O_RDWR рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдмреНрд▓реЙрдХ рд▓реЗрдпрд░ SG_IO ioctl рдХреЗ рд▓рд┐рдП рдЙрд▓реНрд▓реЗрдЦрд┐рдд рдХрд┐рд╕реА рдЕрдиреНрдп SCSI рдХрдорд╛рдВрдб (opcode) рдХреЛ CAP_SYS_RAWIO рдХреНрд╖рдорддрд╛ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдмреЙрд╕ рдиреЗ рдореБрдЭреЗ рд╕рдордЭрд╛рдпрд╛ (рдореИрдВ рд╕рд┐рд░реНрдл рдЙрд╕рдХреЗ рд╢рдмреНрджреЛрдВ рдХреЛ рдпрд╛рдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ), рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдореБрдЭреЗ рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдерд╛ред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдХреБрдЫред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡рд┐рдВрдбреЛрдЬ рдкрд░, IOCTL_SCSI_PASS_THROUGH_DIRECT рдЕрдиреБрд░реЛрдз рдХреЛ рднреА рдкреНрд░рд╢рд╛рд╕рдХ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╢рд╛рдпрдж рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрдареЛрд░ рдХрджрдореЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд▓рд╛рд╣ рджреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдмрд┐рдирд╛ рд░реВрдЯ рдХреЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдЧрд░ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдХреНрд╖рдорддрд╛рдПрдВ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдмреАрдЪ, рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдмрджрд▓реЗрдВ рдФрд░ рд▓рд╛рдЗрди рдкрд░ рдПрдХ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░реЗрдВ:

 int res = ioctl(s_fd, SG_IO, &header;); 

рдФрд░ ioctl () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рднрдВрдбрд╛рд░рдг рдЙрдкрдХрд░рдгреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ:



рдХреЙрд▓ ioctl () рдФрд░ рдлрд┐рд░ рд╕реЗ рд╕реВрдЪреА рджреЗрдЦреЗрдВ:



рдбрд┐рд╡рд╛рдЗрд╕ / рджреЗрд╡ / рдПрд╕рдбреАрдмреА рдмрдиреЗ рд░рд╣реЗ (рдореЛрдЯреЗ рддреМрд░ рдкрд░, рдпрд╣ рдПрд╕рдбреА рдХрд╛рд░реНрдб рд░реАрдбрд░ рд╣реА рд╣реИ), рдФрд░ / рджреЗрд╡ / рдПрд╕рдбреАрдмреА 1 рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ред рдпрд╣ рдбрд┐рд╡рд╛рдЗрд╕ рдореАрдбрд┐рдпрд╛ рдкрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рд╡рд╛рд╣рдХ рдХрдВрдкреНрдпреВрдЯрд░ рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛ рдЧрдпрд╛ - рдпрд╣ рдЕрдм рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рдерд╛ред рд╣рдо рдЯреНрд░реЗрд╕ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рджреВрд╕рд░реЗ ioctl () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдлрд┐рд░ рд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреА рд╕реВрдЪреА рджреЗрдЦрддреЗ рд╣реИрдВ:



SD рдХрд╛рд░реНрдб рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рдЗрд╕рд▓рд┐рдП / dev / sdb1 рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред рджрд░рдЕрд╕рд▓, рд╣рдордиреЗ рд░реЗрдбреНрдб рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рдореЗрдВ STM32 рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡реЗрдВрдбрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдорд╛рдВрдб рдЬрд╛рд░реА рдХрд░рдиреЗ рдФрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╕реАрдЦрд╛ред рдЕрдиреНрдп рдЖрджреЗрд╢ рд╕реНрд╡рддрдВрддреНрд░ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рдкрд╛рдардХреЛрдВ рдкрд░ рдЫреЛрдбрд╝ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рдЖрдк рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдПрдХ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдХреБрдЫ ftdi рдЪрд┐рдк рдПрдХ рд░реАрд╕реЗрдЯ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╛рддреА рд╣реИ, рддреЛ рд╕рдВрдмрдВрдзрд┐рдд рдбрд┐рд╡рд╛рдЗрд╕ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд░рд┐рд▓реЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдФрд░ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдкреИрд░реЛрдВ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдорд╛рдкрдХрд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдареАрдХ рд╣реИ, рдЖрдк рдЙрдирдХреЗ рдмрд╛рдж рдХреЗ рдкрдарди рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд╛рде рдкреГрд╖реНрда рд▓рд┐рдЦрдХрд░ рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдирд┐рд╖реНрдХрд░реНрд╖


рд╣рдордиреЗ рджреЛ рдмрдбрд╝реЗ рд╡рд┐рд╖рдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬреЛ рд░реЗрдб рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рдореЗрдВ рдПрдлрдкреАрдЬреАрдП рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИрдВред рддреАрд╕рд░рд╛ рдмрдирд╛ рд░рд╣рд╛ - MAX3421 рдЪрд┐рдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛, рдЬреЛ USB 2.0 FS рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореЗрдЬрдмрд╛рди рднреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореЗрдЬрдмрд╛рди рдФрд░ рдорджрд░рдмреЛрд░реНрдб рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реИрдВред рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬрдЯрд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдпреВрдПрд╕рдмреА рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ ("рдлрд░реНрдорд╡реЗрдпрд░" рдХреЗ рдЕрдкрдбреЗрдЯ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП), рдПрдХ рдпреВрдПрд╕рдмреА рдХреАрдмреЛрд░реНрдб (рдмрд╛рд╣рд░реА рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП), рдЖрджрд┐ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд╣рдо рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред

Source: https://habr.com/ru/post/hi484706/


All Articles