F модуль x – Графики функций с модулем

Модули — F# | Microsoft Docs

  • Время чтения: 5 мин
  • Соавторы

В этой статье

В контексте F# языка, модуль — это группа F# кодов, таких как значения, типы и значения функции, в F# программы.In the context of the F# language, a module is a grouping of F# code, such as values, types, and function values, in an F# program. Код группирования в модулях объединяет связанный код и помогает избежать конфликтов имен в программе.Grouping code in modules helps keep related code together and helps avoid name conflicts in your program.

СинтаксисSyntax

// Top-level module declaration.
module [accessibility-modifier] [qualified-namespace.]module-name
declarations
// Local module declaration.
module [accessibility-modifier] module-name =
    declarations

ПримечанияRemarks

F# Модуль — это группа F# код конструкций, таких как типы, значений, значений функций и кода в do привязки.An F# module is a grouping of F# code constructs such as types, values, function values, and code in do bindings. Он реализуется как общий класс языковой среды выполнения (CLR), содержит только статические члены.It is implemented as a common language runtime (CLR) class that has only static members. Существует два типа объявлений модулей, в зависимости от того, включены ли весь файл целиком в модуле: объявление модуля верхнего уровня и объявление локального модуля.There are two types of module declarations, depending on whether the whole file is included in the module: a top-level module declaration and a local module declaration. Объявление модуля верхнего уровня содержит весь файл целиком в модуле.A top-level module declaration includes the whole file in the module. Объявление модуля верхнего уровня может отображаться только в качестве первого объявления в файле.A top-level module declaration can appear only as the first declaration in a file.

В синтаксисе объявления верхнего уровня модуля, необязательный доменное пространство имен последовательность вложенных имен пространств имен, содержащего модуль.In the syntax for the top-level module declaration, the optional qualified-namespace is the sequence of nested namespace names that contains the module. Имя пространства имен не нужно предварительно объявлять.The qualified namespace does not have to be previously declared.

У вас нет отступа объявления в модуль верхнего уровня.You do not have to indent declarations in a top-level module. У вас отступ для всех объявлений локальных модулей.You do have to indent all declarations in local modules. В объявлении локального модуля только объявления, которые отображаются с отступом внутри объявления являются частью этого модуля.In a local module declaration, only the declarations that are indented under that module declaration are part of the module.

Если файл с кодом не начинается с объявления модуля верхнего уровня или объявление пространства имен, все содержимое файла, включая все локальные модули, становится частью неявно созданного модуля верхнего уровня, который имеет то же имя файла, без расширения с первой буквой, переведенную в верхний регистр.If a code file does not begin with a top-level module declaration or a namespace declaration, the whole contents of the file, including any local modules, becomes part of an implicitly created top-level module that has the same name as the file, without the extension, with the first letter converted to uppercase. Например рассмотрим следующий файл.For example, consider the following file.

// In the file program.fs.
let x = 40

Этот файл компилируется так, как если бы он был оформлен таким образом:This file would be compiled as if it were written in this manner:

module Program
let x = 40

Если у вас есть несколько модулей в файле, необходимо использовать объявление локального модуля для каждого модуля.If you have multiple modules in a file, you must use a local module declaration for each module. Если объявляется пространство имен, эти модули являются частью вложенное пространство имен.If an enclosing namespace is declared, these modules are part of the enclosing namespace. Если пространство имен не объявлен, модули становятся частью неявно созданного модуля верхнего уровня.If an enclosing namespace is not declared, the modules become part of the implicitly created top-level module. В следующем примере кода показан файл кода, содержащий несколько модулей.The following code example shows a code file that contains multiple modules. Компилятор неявно создает модуль верхнего уровня с именем

Multiplemodules, и MyModule1 и MyModule2 вложены в этого модуля.The compiler implicitly creates a top-level module named Multiplemodules, and MyModule1 and MyModule2 are nested in that top-level module.

// In the file multiplemodules.fs.
// MyModule1
module MyModule1 =
    // Indent all program elements within modules that are declared with an equal sign.
    let module1Value = 100

    let module1Function x =
        x + 10

// MyModule2
module MyModule2 =

    let module2Value = 121

    // Use a qualified name to access the function.
    // from MyModule1.
    let module2Function x =
        x * (MyModule1.module1Function module2Value)

Если у вас есть несколько файлов в проекте или в рамках одной процедуры компиляции, или если вы создаете библиотеку, необходимо включить объявление пространства имен или модуля в верхней части файла.If you have multiple files in a project or in a single compilation, or if you are building a library, you must include a namespace declaration or module declaration at the top of the file. F# Компилятора только определяет имя модуля неявно при имеется только один файл в командной строке, проекта или компиляции, и при создании приложения.The F# compiler only determines a module name implicitly when there is only one file in a project or compilation command line, and you are creating an application.

Модификатор доступа может принимать одно из следующих: public, private, internal.The accessibility-modifier can be one of the following: public, private, internal. Дополнительные сведения см. в статье Управление доступом.For more information, see Access Control. Значение по умолчанию — «public» (открытый).The default is public.

Ссылки на код в модуляхReferencing Code in Modules

При создании ссылки функции, типы и значения из другого модуля, необходимо использовать полное имя или открыть модуль.When you reference functions, types, and values from another module, you must either use a qualified name or open the module. Если вы используете полное имя, необходимо указать пространства имен, модуля и идентификатор нужный элемент программы.If you use a qualified name, you must specify the namespaces, the module, and the identifier for the program element you want. Разделите каждую часть полный путь с точкой (.), следующим образом.You separate each part of the qualified path with a dot (.), as follows.

Namespace1.Namespace2.ModuleName.Identifier

Можно открыть модуль или одно или несколько пространств имен для упрощения кода.You can open the module or one or more of the namespaces to simplify the code. Дополнительные сведения об открытии пространств имен и модулей см. в разделе объявления импорта: open Ключевое слово.For more information about opening namespaces and modules, see Import Declarations: The

open Keyword.

В следующем примере кода показан модуль верхнего уровня, который содержит весь код в конец файла.The following code example shows a top-level module that contains all the code up to the end of the file.

module Arithmetic

let add x y =
    x + y

let sub x y =
    x - y

Чтобы использовать этот код из другого файла, в том же проекте, можно использовать полные имена или открыть модуль перед использованием функции, как показано в следующих примерах.To use this code from another file in the same project, you either use qualified names or you open the module before you use the functions, as shown in the following examples.

// Fully qualify the function name.
let result1 = Arithmetic.add 5 9
// Open the module.
open Arithmetic
let result2 = add 5 9

Вложенные модулиNested Modules

Модули могут быть вложенными.Modules can be nested. Внутренние модули должны иметь отступ относительно внешних модулей для указания, что они внутренних модулей, а не новые модули.Inner modules must be indented as far as outer module declarations to indicate that they are inner modules, not new modules. Например Сравните следующие два примера.For example, compare the following two examples. Модуль

Z представляет собой внутренний модуль, в следующем коде.Module Z is an inner module in the following code.

module Y =
    let x = 1

    module Z =
        let z = 5

Но модуль Z является родственным модуль Y в следующем коде.But module Z is a sibling to module Y in the following code.

module Y =
    let x = 1

module Z =
    let z = 5

Модуль Z находится также на одном уровне в следующем коде, так как для него нет отступа по сравнению с другими объявлениями в модуле Y.Module Z

is also a sibling module in the following code, because it is not indented as far as other declarations in module Y.

module Y =
        let x = 1

    module Z =
        let z = 5

Наконец, если внешний модуль не содержит объявлений и сразу же следует объявление другой модуль, предполагается, что новые объявления модуля является внутренним, но, компилятор выдает предупреждение, если второе определение модуля отобразится без отступа farther чем первый.Finally, if the outer module has no declarations and is followed immediately by another module declaration, the new module declaration is assumed to be an inner module, but the compiler will warn you if the second module definition is not indented farther than the first.

// This code produces a warning, but treats Z as a inner module.
module Y =
module Z =
    let z = 5

Чтобы устранить предупреждение, добавьте отступ внутренний модуль.To eliminate the warning, indent the inner module.

module Y =
    module Z =
        let z = 5

Если требуется, чтобы весь код в файл, который требуется в один внешний модуль, и вы хотите внутренних модулей, внешний модуль не требуется знак равенства и объявления, включая объявления внутренних модулей, которые помещаются во внешний модуль не требуется иметь отступ.If you want all the code in a file to be in a single outer module and you want inner modules, the outer module does not require the equal sign, and the declarations, including any inner module declarations, that will go in the outer module do not have to be indented. Объявления внутри внутренних модулей должны иметь отступы.Declarations inside the inner module declarations do have to be indented. В следующем коде показано в данном случае.The following code shows this case.

// The top-level module declaration can be omitted if the file is named
// TopLevel.fs or topLevel.fs, and the file is the only file in an
// application.
module TopLevel

let topLevelX = 5

module Inner1 =
    let inner1X = 1
module Inner2 =
    let inner2X = 5

Рекурсивные модулейRecursive modules

F#4.1, вводится понятие модулей, позволяющих все автономной кода взаимно рекурсивные.F# 4.1 introduces the notion of modules which allow for all contained code to be mutually recursive. Это делается с помощью module rec.This is done via module rec. Использование module rec могут помочь в решении некоторые трудности в не возможность написания кода в взаимно ссылочные типы и модули.Use of module rec can alleviate some pains in not being able to write mutually referential code between types and modules. Ниже приведен пример этого:The following is an example of this:

module rec RecursiveModule =
    type Orientation = Up | Down
    type PeelState = Peeled | Unpeeled

    // This exception depends on the type below.
    exception DontSqueezeTheBananaException of Banana

    type BananaPeel() = class end

    type Banana(orientation : Orientation) =
        member val IsPeeled = false with get, set
        member val Orientation = orientation with get, set
        member val Sides: PeelState list = [ Unpeeled; Unpeeled; Unpeeled; Unpeeled] with get, set

        member self.Peel() = BananaHelpers.peel self // Note the dependency on the BananaHelpers module.
        member self.SqueezeJuiceOut() = raise (DontSqueezeTheBananaException self) // This member depends on the exception above.

    module BananaHelpers =
        let peel (b: Banana) =
            let flip (banana: Banana) =
                match banana.Orientation with
                | Up -> 
                    banana.Orientation <- Down
                    banana
                | Down -> banana

            let peelSides (banana: Banana) =
                banana.Sides
                |> List.map (function
                             | Unpeeled -> Peeled
                             | Peeled -> Peeled)

            match b.Orientation with
            | Up ->   b |> flip |> peelSides
            | Down -> b |> peelSides

Обратите внимание, что исключение DontSqueezeTheBananaException и класс Banana оба обращаются друг к другу.Note that the exception DontSqueezeTheBananaException and the class Banana both refer to each other. Кроме того, модуль BananaHelpers и класс Banana также обращаются друг к другу.Additionally, the module BananaHelpers and the class Banana also refer to each other. Это не позволяет выражать в F# Если вы удалили rec ключевое слово from RecursiveModule модуля.This would not be possible to express in F# if you removed the rec keyword from the RecursiveModule module.

Эта возможность также возможен в пространства имен с F# 4.1.This capability is also possible in Namespaces with F# 4.1.

См. такжеSee also

docs.microsoft.com

y f x модуль

Вы искали y f x модуль? На нашем сайте вы можете получить ответ на любой математический вопрос. Подробное решение с описанием и пояснениями поможет вам разобраться даже с самой сложной задачей и y модуль f x, не исключение. Мы поможем вам подготовиться к домашним работам, контрольным, олимпиадам, а так же к поступлению в вуз. И какой бы пример, какой бы запрос по математике вы не ввели — у нас уже есть решение. Например, «y f x модуль».

Применение различных математических задач, калькуляторов, уравнений и функций широко распространено в нашей жизни. Они используются во многих расчетах, строительстве сооружений и даже спорте. Математику человек использовал еще в древности и с тех пор их применение только возрастает. Однако сейчас наука не стоит на месте и мы можем наслаждаться плодами ее деятельности, такими, например, как онлайн-калькулятор, который может решить задачи, такие, как y f x модуль,y модуль f x,модуль y равен модуль x. На этой странице вы найдёте калькулятор, который поможет решить любой вопрос, в том числе и y f x модуль. Просто введите задачу в окошко и нажмите «решить» здесь или введите в окно ввода ниже свой запрос (например, модуль y равен модуль x).

Где можно решить любую задачу по математике, а так же y f x модуль Онлайн?

Решить задачу y f x модуль вы можете на нашем сайте https://pocketteacher.ru. Бесплатный онлайн решатель позволит решить онлайн задачу любой сложности за считанные секунды. Все, что вам необходимо сделать — это просто ввести свои данные в решателе. Так же вы можете посмотреть видео инструкцию и узнать, как правильно ввести вашу задачу на нашем сайте. А если у вас остались вопросы, то вы можете задать их в чате снизу слева на этой странице.

www.pocketteacher.ru

Modules (F#)

 

Самая актуальная документация по Visual Studio 2017: Документация по Visual Studio 2017.

В контексте языка F# модуль представляет собой способ группирования кода F#, например значений, типов и значений функций, в программе F#. Группирование кода в модулях помогает не разрывать связанный код и избегать конфликтов имен в программе.

// Top-level module declaration.   
module [accessibility-modifier] [qualified-namespace.]module-name  
declarations  
// Local module declaration.  
module [accessibility-modifier] module-name =  
   declarations  

Модуль F# — это группирование конструкций кода F#, например типов, значений, значений функций и кода в привязках do. Он реализуется в виде класса среды CLR, имеющего только статические члены. Имеется два типа объявлений модулей, которые применяются в зависимости от того, включается ли в модуль файл целиком: объявление модуля верхнего уровня и объявление локального модуля. При объявлении модуля верхнего уровня в модуль включается целый файл. Объявление модуля верхнего уровня может использоваться только в качестве первого объявления в файле.

В синтаксисе объявления модуля верхнего уровня необязательное qualified-namespace представляет собой последовательность вложенных имен пространств имен, содержащую модуль. Предварительно объявлять полное имя пространства имен не обязательно.

Использовать отступы при объявлении модуля верхнего уровня не требуется. Использовать отступы при объявлении всех локальных модулей обязательно. При объявлении локального модуля частью модуля являются только объявления, размещенные с отступом внутри объявления самого модуля.

Если файл с кодом не начинается с объявления модуля верхнего уровня или с объявления пространства имен, все содержимое файла, включая все локальные модули, становится частью неявно созданного модуля верхнего уровня, имя которого совпадает с именем файла без расширения и записанным с прописной буквы. Например, рассмотрим следующий файл.

// In the file program.fs.
let x = 40

Этот файл будет скомпилирован, как если бы он был записан в следующем виде.

module Program
let x = 40

Если в файле имеется несколько модулей, необходимо использовать для каждого из них объявление локального модуля. Если объявлено пространство имен более высокого уровня, эти модули будут частью такого пространства имен. Если пространство имен более высокого уровня не объявлено, эти модули становятся частью неявно созданного модуля верхнего уровня. В следующем примере показан файл с кодом, содержащий несколько модулей. Компилятор неявным образом создает модуль верхнего уровня с именем Multiplemodules, а модули MyModule1 и MyModule2 помещаются внутрь этого модуля.

// In the file multiplemodules.fs.
// MyModule1
module MyModule1 =
    // Indent all program elements within modules that are declared with an equal sign.
    let module1Value = 100
  
    let module1Function x =
        x + 10
     
// MyModule2
module MyModule2 =
  
    let module2Value = 121
  
    // Use a qualified name to access the function.
    // from MyModule1.
    let module2Function x =
        x * (MyModule1.module1Function module2Value)

При наличии в проекте или одной компиляции нескольких файлов или при построении библиотеки необходимо включать в начало файла объявление пространства имен или модуля. Компилятор F# неявно определяет имя модуля только в том случае, если в проекте имеется только один файл или командная строка компиляции и при этом создается приложение.

Можно использовать следующий accessibility-modifier: public, private или internal. Дополнительные сведения см. в разделе Access Control. Значение по умолчанию — «public» (открытый).

При упоминании в модуле функций, типов и значений из другого модуля необходимо использовать полное имя или открыть модуль. При использовании полного имени следует указать пространства имен, модуль и идентификатор требуемого элемента программы. Части полного пути разделяются точками (.), как показано ниже.

Namespace1.Namespace2.ModuleName.Identifier

Чтобы упростить код, можно открыть модуль или одно или несколько пространств имен. Дополнительные сведения об открытии пространств имен и модулей см. в разделе Объявления импорта: ключевое слово open.

В следующем примере кода показан модуль верхнего уровня, содержащий весь код файла.

module Arithmetic

let add x y =
    x + y
    
let sub x y =
    x - y

Для использования кода из другого файла того же проекта следует воспользоваться полными именами или открыть модуль перед использованием соответствующих функций, как показано в следующих примерах.

// Fully qualify the function name.
let result1 = Arithmetic.add 5 9
// Open the module.
open Arithmetic
let result2 = add 5 9

Модули можно помещать друг в друга. Внутренние модули необходимо выделять отступами относительно внешних модулей, чтобы показать, что это вложенные, а не новые модули. Сравните следующие два примера. Модуль Z является внутренним модулем в следующем фрагменте кода.

 module Y =
     let x = 1 
 
     module Z =
         let z = 5

Но модуль Z находится на одном уровне с модулем Y в следующем фрагменте кода.

 module Y =
     let x = 1 

 module Z =
     let z = 5

В следующем примере кода модуль Z также находится на одном уровне, поскольку у него нет отступа по сравнению с другими объявлениями в модуле Y.

 module Y =
         let x = 1

     module Z =
         let z = 5

Наконец, если внешний модуль не содержит объявлений, и сразу после него следует объявление другого модуля, новый модуль считается внутренним, но компилятор выдает предупреждение, если второй модуль не имеет отступа относительно первого модуля.

 // This code produces a warning, but treats Z as a inner module.
 module Y =
 module Z =
     let z = 5

Чтобы избежать предупреждения, объявите внутренний модуль с отступом.

 module Y =
     module Z =
         let z = 5

Если весь код в файле должен принадлежать к одному внешнему модулю и необходимо использовать внутренние модули, внешний модуль не требует знака равенства, а объявления, включая объявления внутренних модулей, которые помещаются во внешний модуль не должны иметь отступа. Объявления внутри внутренних модулей должны иметь отступы. Это показано в следующем примере.

// The top-level module declaration can be omitted if the file is named
// TopLevel.fs or topLevel.fs, and the file is the only file in an
// application.
module TopLevel

let topLevelX = 5

module Inner1 =
    let inner1X = 1
module Inner2 =
    let inner2X = 5

Справочник по языку F#
Namespaces

technet.microsoft.com

график функции y=модуль x вид графика? ..

Вроде Прямые симметричные оси x

да симметричные прямые в виде галочки)

\ | / ———\|/———-&gt;x | вот примерно так! ) тока с осью оХ не пересекаеться, и линия сплошная!

Названия нет ни у этой функции, ни у её графика, но график выглядит галочкой, выходит из точки (0,0) и дальше строится по точкам (1,1) (2,2) (3,3) (-1,1) (-2,2) (-3,3) и т. д.

тебе сюда megaresheba.ru

как называется этот график сам??

touch.otvet.mail.ru

ГИА — построение графиков функций со знаком модуля / Sandbox / Habr

Всем привет! Хотел бы сегодня объяснить такую тему, как построение графиков. Вероятно большинство знает, как строить простые графики функций, такие как y=x^2 или y=1/x. А как строить графики со знаком модуля?

Задача 1. Построить графики функций y=|x| y=|x-1|.
Решение. Сравним его с графиком функции y=|x|.При положительных x имеем |x|=x. Значит, для положительных значений аргумента график y=|x| совпадает с графиком y=x, то есть эта часть графика является лучём, выходящим из начала координат под углом 45 градусов к оси абсцисс. При x< 0 имеем |x|= -x; значит, для отрицательных x график y=|x| совпадает с биссектрисой второго координатного угла.
Впрочем, вторую половину графика (для отрицательных X) легко получить из первой, если заметить, что функция y=|x| — чётная, так как |-a|=|a|. Значит, график функции y=|x| симметричен относительно оси Oy, и вторую половину графика можно приобрести, отразив относительно оси ординат часть, начерченную для положительных x. Получается график:

y=|x|

Для построения берём точки (-2; 2) (-1; 1) (0; 0) (1; 1) (2; 2).

Теперь график y=|x-1|. Если А — точка графика у=|x| с координатами (a;|a|), то точкой графика y=|x-1| с тем же значением ординаты Y будет точка A1(a+1;|a|). (Почему?) Эту точку второго графика можно получить из точки А(a;|a|) первого графика сдвигом параллельно оси Ox вправо. Значит, и весь график функции y=|x-1|получается из графика функции y=|x| сдвигом параллельно оси Ox вправо на 1.

Построим графики:

y=|x-1|

Для построения берём точки (-2; 3) (-1; 2) (0; 1) (1; 0) (2; 1).

Это была простенькая задачка. Теперь то, что многих приводит в ужас.

Задача 2. Постройте график функции y=3*|x-4| — x + |x+1|.
Решение. Найдем точки, в которых подмодульные выражения обращаются в нуль, т.е. так называемые «критические» точки функции. Такими точками будут х=-1 и х=4. В этих точках подмодульные выражения могут изменить знак.

Пусть x<-1. Тогда х+1<0, |x+1|=-x-1; x-4<0, |x-4|=-x+4; Следовательно y= 3(-х+4)-х+(-х-1)= -5х+11.
Пусть -1< = x < = 4. Тогда х+1>0, |x+1|=x+1; x-4<0, |x-4|=-x+4; Следовательно y= 3(-х+4)-х+(х+1)= -3х+13.
Пусть х>4. Тогда х+1>0, |x+1|=x+1, x-4>0; |x-4|=x-4; Следовательно у= 3(х-4)-х+х+1= 3х-11.

Значит, нам нужно построить график функции (именно один)
{ у= -5х+11, при x<-1
{ y= -3х+13, при -1< = x < = 4.
{ y= 3х-11, при х>4

Для построения первого берём точки (1; 6) (2; 1)
Для построения второго берём точки (3; 4) (4; 1)
Для построения третьего берём точки (3; -2) (4; 1)

Ну и последняя на сегодня задача, которую мы разберём.
Задача 3. Построить график функции y= |1/4 x^2 — |x| — 3|.
Решение. Функция y= |f(|x|)| чётная. Нужно построить для x>=0 y= f(x) график функции, затем его симметрично отразить относительно оси Oy(это график y= |1/4 x^2 — x — 3|.), и, наконец, ту часть полученного графика, которая расположена в нижней полуплоскости, симметрично отразить относительно оси Ox (y= 1/4 x^2 — |x| — 3.).
Вот что из этого выйдет:

y= |1/4 x^2 — |x| — 3|

Итак, всем спасибо! Теперь мы получили ту базу знаний, необходимую для построения графиков со знаком модуля! А то его так все боятся.

Вот ссылка, которая поможет вам проверить ваши построения:

habr.com

Презентация на тему: Модуль 10: Программирование Flash C28x

Цифровой сигнальный контроллер TMS320F2812

Texas Instruments Incorporated

 

Основная работа с Flash

 

Flash упорядочена в станицы по 128 адресов

 

Дополнительные такты для последовательного

 

доступа внутри

 

страницы и произвольного доступа по страницам

 

OTP — только произвольный доступ

 

Необходимость определения числа дополнительных

 

тактов

 

сигнала SYSCLKOUT

 

Операция «сброс» устанавливает максимальное

 

значение!

 

Код настройки Flash не должен запускаться из Flash

 

памяти !

*** из руководства пользователя F281x ***

Для 150 МГц, PAGEWAIT = 5, RANDWAIT = 5, OTPWAIT = 8 Для 135 МГц, PAGEWAIT = 4, RANDWAIT = 4, OTPWAIT = 8

Ускорение исполнения кода из Flash:

Конвейерный режим работы Flash (для выборки кода

только)

 

 

 

 

 

 

 

 

 

 

 

16 или

 

 

 

 

 

 

 

 

 

 

 

 

 

64

 

 

 

32

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

64

 

 

 

 

 

 

 

 

битная

 

 

 

Модуль

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

отправка

 

 

декодера

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ядра C28x

 

 

 

Выборка

 

2-х

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

выровненная

уровневы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

по 64 бита

й буферРазрешение конвейерного

 

 

 

 

 

 

выборки

 

 

режима Flash

 

 

 

 

 

 

 

 

0 = запрещено (по умолчанию)

 

 

 

 

 

 

 

 

 

 

 

1 = разрешено

FOPT @ 0x00 0A80

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

 

 

 

 

 

 

 

1

 

0

 

 

 

 

зарезервировано

 

 

 

 

ENPIPE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Остальные регистры конфигурации

Адрес

Имя

Flash

Описание

0x00

0A80 FOPT

Регистр опций Flash

0x00

0A82 FPWR

Регистр режима питания Flash

0x00

0A83 FSTATUS

Регистр статуса Flash

0x00

0A84 FSTDBYWAIT

Регистр ожидания перевода Flash из спящего

0x00

0A85 FACTIVEWAIT

в режим ожидания

 

Регистр ожидания перевода Flash из режима

0x00

0A86 FBANKWAIT

ожидания в спящий

Регистр ожидания доступа при циклах чтения Fla

0x00

0A87 FOTPWAIT

Регистр ожидания доступа при циклах чтения OTP

FPWR: Для сохранения электроэнергии – перевод Flash/OTP в

спящий или режим ожидания; Flash автоматически вернется в активный режим при последующем доступе в Flash/OTP

FSTATUS: различные биты статуса (например режим

энергосбережения)

FSTDBYWAIT: определяет число циклов ожидания при

пробуждении из спящего или режима ожидания

FACTIVEWAIT: определяет число циклов ожидания при

пробуждении из режима ожидания в активный

Значение этих регистров часто существенны – смотрите “TMS320F28x DSP

System Control and Interrupts Reference Guide,” SPRU078, для получения большей 10 — 6

информации

Основы программирования Flash

Последовательность шагов для программирования Flash:

 

 

 

 

 

Алгоритм

Функции

1.

Стирание

Установка всех бит в ноль, затем в единиц

2.

ПрограммированиеПрограммирование выбранных бит в ноль

3.

Верификация

Верификация содержимого flash

 

 

 

 

Минимальный стираемый размер данных

-сектор (4К слова / 8K слов / 16K слов)

Минимальный размер программируемых данных – один бит!

Важным является не потерять электропитание во время выполнения шага стирания: если CSM пароль будет равен нулю,

CSM заблокируется навсегда!

Вероятность происхождения данной ситуации очень мала!

(Стирание выполняется сектор за сектором)

Утилиты программирования Flash

Code Composer Studio дополнительные модули (используя JTAG) *

Последовательный загрузчик Flash от TI (использует загрузку через SCI) *

Комплект программирования (использует

загрузку через GPIO)

Программирование программы загрузкиПрограммирование данных ввода/вывода

Построение своей собственной утилиты

Использование другого метода загрузки из ПЗУ

чем SCI

Встраивание кода программирования flash в

приложение

API алгоритмы* Доступнопрограммированияна сайте TII:: www..tiiFlash..com 10 — 9

предлагаются TI

Подключаемый модуль Flash для Code Composer Studio

studfiles.net

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *